SQLite FORMAT() 函数的工作方式类似于 printf()来自标准 C 库的函数。第一个参数是格式字符串,指定如何使用从后续参数获取的值构造输出字符串。如果 format 参数缺失或为 NULL,则结果为 NULL。 %n 格式会被静默忽略并且不消耗参数。 %p 格式是 %X 的别名。 %z 格式可与 %s 互换。如果参数列表中的参数太少,则假定缺少的参数具有 NULL 值,对于数字格式,该值被转换为 0 或 0.0,对于 %s 则转换为空字符串。
语法
FORMAT(format, ...)
参数
format | 指定格式字符串。 |
...(附加参数) | 根据格式字符串,应在函数中传递一系列附加参数,每个参数包含一个值来替换格式字符串中的格式说明符。如果参数列表中的参数太少,则假定缺少的参数具有 NULL 值,对于数字格式,该值被转换为 0 或 0.0,对于 %s 则转换为空字符串。此函数将忽略其他参数。 |
返回值
返回格式化字符串。
示例1:format()示例
下面的示例展示了FORMAT()函数的用法。
SELECT FORMAT("Decimals: %d %i", 200, 300);
Result: Decimals: 200 300
SELECT FORMAT("More Decimals: %ld %li", 20000, 30000);
Result: More Decimals: 20000 30000
SELECT FORMAT("Octals: %o %#o", 100, 100);
Result: Octals: 144 0144
SELECT FORMAT("Hexadecimals: %x %#x %X %#X", 100, 100, 100, 100);
Result: Hexadecimals: 64 0x64 64 0X64
SELECT FORMAT("Strings: %s", "Hello");
Result: Strings: Hello
SELECT FORMAT("Scientific notation: %e %E", 123.45, 123.45);
Result: Scientific notation: 1.234500e+02 1.234500E+02
SELECT FORMAT("Floats: %2.0f %2.2f %2.4f", 3.1416, 3.1416, 3.1416);
Result: Floats: 3 3.14 3.1416
SELECT FORMAT("Positive signed number = %+.2f", 3.1416);
Result: Positive signed number = +3.14
SELECT FORMAT("Padded number = %05d", 89);
Result: Padded number = 00089
SELECT FORMAT("Number with Width = %*d", 5, 89);
Result: Number with Width = 89
示例2:格式化日期字符串
考虑一个名为 BirthDay 的数据库表,其中包含以下记录:
Name | Day | Month | Year |
---|---|---|---|
John | 2 | 5 | 2001 |
Marry | 7 | 8 | 2003 |
Kim | 3 | 10 | 1995 |
Jo | 25 | 3 | 1985 |
Suresh | 15 | 11 | 1998 |
Ramesh | 27 | 8 | 2000 |
下面给出的语句可用于使用 Day、 Month、Year的值获取完整日期月和年列。
SELECT *, FORMAT("%04d-%02d-%02d", Year, Month, Day) AS FullDate FROM Birthday;
这将产生如下所示的结果:
Name | Day | Month | Year | FullDate |
---|---|---|---|---|
John | 2 | 5 | 2001 | 2001-05-02 |
Marry | 7 | 8 | 2003 | 2003-08-07 |
Kim | 3 | 10 | 1995 | 1995-10-03 |
Jo | 25 | 3 | 1985 | 1985-03-25 |
Suresh | 15 | 11 | 1998 | 1998-11-15 |
Ramesh | 27 | 8 | 2000 | 2000-08-27 |