PostgreSQL parse_ident() 函数使用指南

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

parse_ident() 语法

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

parse_ident (qualified_identifier)

或者

parse_ident (qualified_identifier, strict_mode)

参数

qualified_identifier
必需的。 文本类型。 一个合格的标识符。
strict_mode
可选的。 布尔类型。 是否启用严格模式。默认是 true.

返回值

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

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

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

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

parse_ident() 示例

基本用法

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

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

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

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

严格模式

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

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

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

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

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