GBase 8c
其他
文章

GBase 8c 函数与操作符——3-format函数

发表于2023-12-11 11:17:3224次浏览3个评论

函数format用于将字段的显示进行格式化。类似于C函数sprintf。语法:

format(formatstr text [, formatarg "any" [, ...] ])

formatstr指定了结果将被如何格式化。
格式字符串中的文本,除格式说明符外,都将被直接复制到结果中。格式说明符定义了后续的函数参数将如何被格式化及插入到结果中。

格式说明符由一个%字符开始,其语法表示为:

%[position][flags][width]type

其中:

  • position(可选):形式为n&,其中n为要打印的参数的索引。如果忽略position会默认使用序列中的下一个参数;

  • flags(可选):为符号-时,将格式说明符的输出左对齐。

  • width(可选):用于显示格式说明符输出的最小字符数。表示形式:1)一个正整数;2)*表示使用下一个函数参数作为宽度;3)*n$的字符串表示使用第n个函数参数作为宽度。

  • type(必需):格式转换的类型,用于产生格式说明符的输出,支持的类型为:1)s将参数格式化为一个简单的字符串;2)I将参数视为SQL标识符,并在必要时用双引号包围;3)L将参数引用为SQL文字。

下面为一些基本的格式转换的例子:

SELECT format('Hello %s', 'World'); 结果:Hello World SELECT format('Testing %s, %s, %s, %%', 'one', 'two', 'three'); 结果:Testing one, two, three, % SELECT format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly'); 结果:INSERT INTO "Foo bar" VALUES('O''Reilly') SELECT format('INSERT INTO %I VALUES(%L)', 'locations', E'C:\\Program Files'); 结果:INSERT INTO locations VALUES(E'C:\\Program Files')

使用width和-标志的例子:

SELECT format('|%10s|', 'foo'); 结果:|       foo| SELECT format('|%-10s|', 'foo'); 结果:|foo       | SELECT format('|%*s|', 10, 'foo'); 结果:|       foo| SELECT format('|%*s|', -10, 'foo'); 结果:|foo       | SELECT format('|%-*s|', 10, 'foo'); 结果:|foo       | SELECT format('|%-*s|', -10, 'foo'); 结果:|foo       |

使用position的例子:

SELECT format('Testing %3$s, %2$s, %1$s', 'one', 'two', 'three'); 结果:Testing three, two, one SELECT format('|%*2$s|', 'foo', 10, 'bar'); 结果:|       bar| SELECT format('|%1$*2$s|', 'foo', 10, 'bar'); 结果:|       foo|

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 7个月前
学习。
用户头像
levvel发表于 7个月前
看完收获很大!
zixuwang发表于 2个月前
加油