PostgreSQL format() 函数使用指南

PostgreSQL format() 函数根据指定的格式字符串和参数返回一个格式化的字符串。

format() 语法

这是 PostgreSQL format() 函数的语法:

format(format_str, [param1[, param2] ...])

参数

  • format_str

    必需的。 一个格式字符串。这个格式字符串中可能包含多个格式说明符。格式说明符采用下面的形式:

    %[position][flags][width]type
    

    格式说明符由 % 开始,由类型结束,中间有 3 个可选的参数 position, flags, 和 width

    • position

      可选的。 它用来指明要使用的哪一个参数。它采用 N$ 这样的形式,其中 N 是一个数数字。N 从 1 开始,1 意味着 format_str 之后的第一个参数。如果不指定,默认是使用参数列表中的下一个参数。

    • flags

      可选的。 与宽度选项搭配使用。目前仅支持一个符号:减号(-),它表示输出左对齐。未指定宽度时,不起作用。

    • width

      可选的。它用来设置此格式说明符输出的最少字符数。根据 flag 的设定,对输出进行左侧填充或右侧填充空格。如果指定的宽度小于参数的宽度,则不起任何作用。

      这个参数可以使用下列中的任何一个:

      • 一个正整数值
      • 一个星号 (*) 使用下一个函数参数作为宽度
      • 一个格式为 *n$ 的字符串,用于使用第 n 个函数参数作为宽度。
    • type

      必须的。 指定格式说明符的输出的类型。支持下列的类型:

      • s 将参数值的格式设置为简单字符串。空值被视为空字符串。
      • I 将参数值视为 SQL 标识符,必要时对其进行双引号包围。值为 null 是错误的
      • L 将参数值引起来作为 SQL 文本。空值显示为字符串 NULL,不带引号
  • param1...

    可选的。 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则会忽略额外的参数。参数的数量是可变的,可能为零。

返回值

PostgreSQL format() 函数根据指定的格式字符串和参数返回一个格式化的字符串。

format() 示例

基本用法

这个示例说明了如果使用 PostgreSQL format() 函数格式化输出一个字符串。

SELECT format('Hello %s', 'World') AS "format('Hello %s', 'World')";
 format('Hello %s', 'World')
-----------------------------
 Hello World

这个实例说明了如何使用 PostgreSQL format() 函数格式化输出多个参数。

SELECT format('This is %s, he is %s years old.', 'Tim', 20);
              format
----------------------------------
 This is Tim, he is 20 years old.

对于同一格式字符串,您可以轻松的修改参数来输出另一个不同的内容。如下:

SELECT format('This is %s, he is %s years old.', 'Tom', 18);
              format
----------------------------------
 This is Tom, he is 18 years old.

参数的位置

您可以在格式说明符中指定使用参数的索引位置,如下:

SELECT format('Reserve arguments: %3$s, %2$s, %1$s', 'A', 'B', 'C');
           format
----------------------------
 Reserve arguments: C, B, A

宽度

本示例展示了如何使用 PostgreSQL format() 函数在一个字符串左侧填充空格使其宽度达到 10。

SELECT format('|%10s|', 'foo');
    format
--------------
 |       foo|

以下的语句可以达到相同的目的:

SELECT format('|%*s|', 10, 'foo');

本示例展示了如何使用 PostgreSQL format() 函数在一个字符串右填充空格使其宽度达到 10。

SELECT format('|%-10s|', 'foo');
    format
--------------
 |foo       |

以下的语句可以达到相同的目的:

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