简介
FORMAT
FORMAT
函数使用类似 printf 的格式化字符串将参数拼装成字符串。适合生成带有固定前缀、补零、小数位控制的格式化输出。与
DATE_FORMAT
DATE_FORMAT
不同,
FORMAT
FORMAT
是通用字符串格式化函数,不专用于日期。
语法
FORMAT(format_str, arg1[, arg2, ...])
参数
format_str
format_str
:格式化模板字符串,包含普通字符和格式占位符。
arg1, arg2, ...
arg1, arg2, ...
:按顺序替换 format_str
format_str
中每个占位符的值。
常用占位符:
| 占位符 | 含义 | 示例 |
|---|
%s
%s | 字符串 | FORMAT('%s', 'hello')
FORMAT('%s', 'hello') → hello
hello |
%d
%d | 整数(十进制) | FORMAT('%d', 42)
FORMAT('%d', 42) → 42
42 |
%f
%f | 浮点数 | FORMAT('%f', 3.14)
FORMAT('%f', 3.14) → 3.140000
3.140000 |
%.2f
%.2f | 保留 2 位小数 | FORMAT('%.2f', 3.14159)
FORMAT('%.2f', 3.14159) → 3.14
3.14 |
%05d
%05d | 整数补零至 5 位 | FORMAT('%05d', 42)
FORMAT('%05d', 42) → 00042
00042 |
%%
%% | 输出字面量 %
% | FORMAT('100%%')
FORMAT('100%%') → 100%
100% |
返回结果
返回
VARCHAR
VARCHAR
类型的格式化字符串。
示例
- 基本用法:字符串与整数拼装:
SELECT FORMAT('%s=%d', 'x', 42);
+--------------------------+
| format('%s=%d', 'x', 42) |
+--------------------------+
| x=42 |
+--------------------------+
- 控制浮点小数位:
SELECT FORMAT('price: %.2f', 9.9);
+----------------------------+
| format('price: %.2f', 9.9) |
+----------------------------+
| price: 9.90 |
+----------------------------+
- 整数补零(生成固定宽度编号):
SELECT FORMAT('order-%05d', 7);
+-------------------------+
| format('order-%05d', 7) |
+-------------------------+
| order-00007 |
+-------------------------+
- 多参数混合格式化:
SELECT FORMAT('user %s has %d points (%.1f%%)', 'alice', 320, 64.5);
+---------------------------------------------------------------+
| format('user %s has %d points (%.1f%%)', 'alice', 320, 64.5) |
+---------------------------------------------------------------+
| user alice has 320 points (64.5%) |
+---------------------------------------------------------------+
注意事项
FORMAT
FORMAT
是字符串格式化函数,DATE_FORMAT
DATE_FORMAT
才是日期格式化函数,两者占位符语法不同,不可混用。
- 占位符数量须与后续参数数量一致,多余参数会被忽略,参数不足时行为未定义。
%%
%%
用于在输出中插入字面量 %
%
字符。
相关函数