SQLite PRINTF() 函数的工作方式类似于 printf()来自标准 C 库的函数。第一个参数是格式字符串,指定如何使用从后续参数获取的值构造输出字符串。如果 format 参数缺失或为 NULL,则结果为 NULL。 %n 格式会被静默忽略并且不消耗参数。 %p 格式是 %X 的别名。 %z 格式可与 %s 互换。如果参数列表中的参数太少,则假定缺少的参数具有 NULL 值,对于数字格式,该值被转换为 0 或 0.0,对于 %s 则转换为空字符串。
注意:此函数是 SQLite FORMAT() 函数的别名。
语法
PRINTF(format, ...)
参数
format | 指定格式字符串。 |
...(附加参数) | 取决于字符串格式 ,应在函数中传递一系列附加参数,每个参数都包含一个值来替换 format 字符串中的格式说明符。如果参数列表中的参数太少,则假定缺少的参数具有 NULL 值,对于数字格式,该值被转换为 0 或 0.0,对于 %s 则转换为空字符串。此函数将忽略其他参数。 |
返回值
返回格式化字符串。
示例1:printf()示例
下面的示例展示了PRINTF()函数的用法。
SELECT PRINTF("Decimals: %d %i", 200, 300);
Result: Decimals: 200 300
SELECT PRINTF("More Decimals: %ld %li", 20000, 30000);
Result: More Decimals: 20000 30000
SELECT PRINTF("Octals: %o %#o", 100, 100);
Result: Octals: 144 0144
SELECT PRINTF("Hexadecimals: %x %#x %X %#X", 100, 100, 100, 100);
Result: Hexadecimals: 64 0x64 64 0X64
SELECT PRINTF("Strings: %s", "Hello");
Result: Strings: Hello
SELECT PRINTF("Scientific notation: %e %E", 123.45, 123.45);
Result: Scientific notation: 1.234500e+02 1.234500E+02
SELECT PRINTF("Floats: %2.0f %2.2f %2.4f", 3.1416, 3.1416, 3.1416);
Result: Floats: 3 3.14 3.1416
SELECT PRINTF("Positive signed number = %+.2f", 3.1416);
Result: Positive signed number = +3.14
SELECT PRINTF("Padded number = %05d", 89);
Result: Padded number = 00089
SELECT PRINTF("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、 的值获取完整日期月和年列。
SELECT *, PRINTF("%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 |