parse_ident()

将限定对象名称拆分为数组的函数

parse_ident() 是一个将限定对象名称拆分为数组的系统函数。

parse_ident()PostgreSQL 9.6 中添加。

用法

parse_ident ( qualified_identifier text [, strict_mode boolean DEFAULT true ] )
        → text[]

parse_ident() 接受一个限定的对象标识符(例如由其模式名称限定的表名,例如 foo.bar)并返回一个包含每个单独标识符的数组,并删除任何引号。

请注意,parse_ident() 除了检查对象名称中无效的字符外,不验证标识符。此行为可以通过将 strict_mode 设置为 FALSE 来覆盖,这将允许 parse_ident() 解析例如函数定义。

更改历史记录

示例

基本用法

postgres=# SELECT parse_ident('foo.bar');
 parse_ident 
-------------
 {foo,bar}
(1 row)

使用部分带引号的标识符

postgres=# SELECT parse_ident('"Foo".bar');
 parse_ident 
-------------
 {Foo,bar}
(1 row)

使用无效标识符

postgres=# SELECT parse_ident('foo.bar!');
ERROR:  string is not a valid identifier: "foo.bar!"

使用函数名

postgres=# SELECT parse_ident('foo.bar()', FALSE);
 parse_ident 
-------------
 {foo,bar}
(1 row)

请注意,将 strict_mode 设置为 FALSE(如上面针对函数名所做的那样)只会忽略从遇到无效字符开始的任何无效字符。

postgres=# SELECT parse_ident('foo.bar!!!', FALSE);
 parse_ident 
-------------
 {foo,bar}
(1 row)

postgres=# SELECT parse_ident('foo!.bar!', FALSE);
 parse_ident 
-------------
 {foo}
(1 row)

提供比限定标识符有效数量更多的元素不会引发错误。

postgres=# SELECT parse_ident('foo.bar."Baz".boo.zoo');
      parse_ident      
-----------------------
 {foo,bar,Baz,boo,zoo}
(1 row)

超过 NAMEDATALEN 的标识符会被接受。

postgres=# SELECT parse_ident('foo.a2345678901234567890123456789012345678901234567890123456789012345');
                               parse_ident                               
-------------------------------------------------------------------------
 {foo,a2345678901234567890123456789012345678901234567890123456789012345}
(1 row)

可以通过将结果数组转换为 NAME[] 来修剪这些标识符。

postgres=# SELECT parse_ident('foo.a2345678901234567890123456789012345678901234567890123456789012345')::NAME[];
                              parse_ident                              
-----------------------------------------------------------------------
 {foo,a23456789012345678901234567890123456789012345678901234567890123}
(1 row)

分类

模式 (命名空间)字符串操作系统函数

参见

quote_ident()

反馈

提交关于 "parse_ident()" 的任何评论、建议或更正 在此