Skip to content

PostgreSQL parse_ident() 函数 ​

PostgreSQL parse_ident() 函数将参数拆分成一个标识符的数组,同时删除单个标识符两端的引号。如果启用了严格模式,最后一个标识符之后的其他字符将会导致一个错误。如果未启用严格模式,parse_ident() 将会忽略额外的字符。

parse_ident() 语法 ​

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

sql
parse_ident (qualified_identifier)

或者

sql
parse_ident (qualified_identifier, strict_mode)

参数 ​

  • qualified_identifier

    必需的。 文本类型。 一个合格的标识符。

  • strict_mode

    可选的。 布尔类型。 是否启用严格模式。默认是 true.

返回值 ​

PostgreSQL parse_ident() 函数返回一个数组,其中包含了从 qualified_identifier 拆分而来的所有标识符。

以下情况将会导致一个错误:

  • qualified_identifier 不是以一个有效的标识符开头会导致一个错误。
  • 严格模式下,最后一个标识符之后的其他字符将会导致一个错误。

若参数为 NULL,该函数将返回 NULL。

parse_ident() 示例 ​

基本用法 ​

这个示例说明了如果使用 parse_ident() 函数拆分合格的标识符。

sql
SELECT parse_ident('"SomeSchema".someTable');
bash
      parse_ident
------------------------
 {SomeSchema,sometable}

如果单独的标识符两端的引号不能去掉,则引号会被保留:

sql
SELECT parse_ident('"SomeSchema"."some Table"');
bash
        parse_ident
---------------------------
 {SomeSchema,"some Table"}

严格模式 ​

默认情况下,parse_ident() 使用严格模式,也就是说,您必须使用一个合格的标识符作为参数,否则会发生错误。

sql
SELECT parse_ident('"SomeSchema"."someTable"Error');

这里会产生一个错误: ”错误: 字符串不是一个合法的标识符:““SomeSchema”.“someTable"Error”“。

如果不使用严格模式,parse_ident() 会忽略调最后的错误字符。我们可以传入 strict_mode 参数设置为 false 来禁用严格模式。如下:

sql
SELECT parse_ident('"SomeSchema"."someTable"Error', false);
bash
      parse_ident
------------------------
 {SomeSchema,someTable}