九月 18, 2023
摘要:PostgreSQL 的FORMAT()
函数根据格式字符串格式化参数。
目录
如果你使用过 C 语言编程,你会发现FORMAT()
函数和sprintf()
函数是相似的。
语法
PostgreSQL 的FORMAT()
函数的语法如下:
FORMAT(format_string [, format_arg [, ...] ])
FORMAT()
函数是可变参数的,参数列表是用VARIADIC
关键字标记的,因此,您可以传递数组形式的参数进行格式化。
FORMAT()
函数将数组的元素视为普通参数,并将 NULL 视为零元素的数组。
参数
1) format_string
format_string
参数是一个字符串,指定结果字符串的格式。
format_string
由文本和格式说明符组成。文本直接复制到结果字符串,而格式说明符是要插入到结果字符串的参数的占位符。
下面显示了格式说明符的语法:
%[position][flags][width]type
格式说明符以%
字符开头。它具有三个可选部分:position
、flags
、width
,和一个必需部分type
。
position
position
指定要在结果字符串中插入哪个参数。position
采用n$
形式,其中n
是参数索引。第一个参数从 1 开始。
如果省略position
部分,则默认值是列表中的下一个参数。
flags
目前,这些标志可以接受减号 (-
),指示格式说明符的输出进行左对齐。
flags
部分只有在指定width
字段时才生效。
width
可选的width
字段指定用于显示格式说明符输出的最小字符数。
结果字符串可以向左或向右填充空格,以适应width
。
如果width
太小,输出将按原样显示,不进行任何截断。
width
可以是以下值之一:
- 正整数。
- 星号 (
*
) 使用下一个函数参数作为宽度。 *n$
形式的字符串使用第 n 个函数参数作为宽度。
type
type
是用于生成格式说明符输出的格式转换类型。
type 参数的允许值如下:
s
将参数值格式化为字符串。NULL 被视为空字符串。I
将参数值视为 SQL 标识符。L
将参数值用引号修饰 SQL 文字。
我们经常使用I
和L
来构造动态 SQL 语句。
如果要在结果字符串中包含%
,请使用双百分号%%
。
2) format_arg
如前所述,您将许多格式参数传递给FORMAT()
函数。
返回值
FORMAT()
函数会返回一个格式化的字符串。
示例
让我们看一下使用FORMAT()
函数的一些示例。
A) 简单的格式
以下语句使用FORMAT()
函数来格式化字符串:
SELECT FORMAT('Hello, %s', 'PostgreSQL');
输出是:
'Hello, PostgreSQL'
在此示例中,%s
被替换为字符串参数'PostgreSQL'
。
请查看示例数据库中的customer
表,如下。
以下语句使用FORMAT()
函数根据名字和姓氏构造客户的全名:
SELECT
FORMAT('%s, %s', last_name, first_name) full_name
FROM
customer;
ORDER BY
full_name;
在此示例中,我们使用了两个格式说明符 %s %s,然后将其替换为first_name
和last_name
列中的值。
B) 使用flags
部分的示例
以下语句显示了如何在格式说明符中使用flags
和width
部分:
SELECT FORMAT('|%10s|', 'one');
输出字符串左填充空格并向右对齐。
format
--------------
| one|
(1 row)
要使其左对齐,请使用–
作为标志:
SELECT FORMAT('|%-10s|', 'one');
输出是:
format
--------------
|one |
(1 row)
C) 使用position
部分的示例
此示例显示如何使用格式说明符的position
部分:
SELECT
FORMAT('%1$s apple, %2$s orange, %1$s banana', 'small', 'big');
下图说明了输出:
format
---------------------------------------
small apple, big orange, small banana
(1 row)
在这个例子中,我们有两个参数,分别是'small'
和'big'
字符串。
1$
和2$
位置指示FORMAT()
函数将第一个 ('small'
) 和第二个参数 ('big'
) 注入相应的占位符中。
1$
位置在格式字符串中出现两次,因此第一个参数也被插入两次。
在本教程中,您学习了如何使用 PostgreSQL 的FORMAT()
函数,根据格式字符串格式化参数。
了解更多
PostgreSQL 教程:字符串函数
PostgreSQL 文档:字符串函数和操作符