SQLite 函数

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 的数据库表,其中包含以下记录:

NameDayMonthYear
John252001
Marry782003
Kim3101995
Jo2531985
Suresh15111998
Ramesh2782000

下面给出的语句可用于使用 Day、 Month、Year的值获取完整日期月和年列。

SELECT *, FORMAT("%04d-%02d-%02d", Year, Month, Day) AS FullDate FROM Birthday; 

这将产生如下所示的结果:

NameDayMonthYearFullDate
John2520012001-05-02
Marry7820032003-08-07
Kim31019951995-10-03
Jo25319851985-03-25
Suresh151119981998-11-15
Ramesh27820002000-08-27