string_to_array()
是一个系统函数,用于使用指定的定界符将字符串分割成数组。
string_to_array()
在PostgreSQL 7.4中添加。
用法
string_to_array (string
text
,delimiter
text
[,null_string
text
] ) →text
[]
请注意,string_to_array()
不适合用于CSV 字符串的常规解析,因为它会在定界符的每次出现时进行分割,并且不考虑定界符是否嵌入在带引号的字符串中。
变更历史
- PostgreSQL 9.1
- 添加了可选的第三个参数,指定要作为
NULL
值处理的字符串(提交33f43725)
- 添加了可选的第三个参数,指定要作为
- PostgreSQL 7.4
- 已添加(提交b3c0551e)
示例
string_to_array()
的基本用法示例
postgres=# SELECT string_to_array('1|2|3', '|'); string_to_array ----------------- {1,2,3} (1 row)
默认情况下,字符串中嵌入的NULL
将转换为字符串字面量。
postgres=# SELECT string_to_array('1|NULL|3', '|'); string_to_array ----------------- {1,"NULL",3} (1 row)
要将其解释为实际的NULL
值,需要将其指定为第三个参数。
postgres=# SELECT string_to_array('1|NULL|3', '|', 'NULL'); string_to_array ----------------- {1,NULL,3} (1 row)
任何任意值都可以解释为NULL
。
postgres=# SELECT string_to_array('1|xxx|3', '|', 'xxx'); string_to_array ----------------- {1,NULL,3} (1 row)
请注意,string_to_array()
*不* 适用于解析任意的CSV 字符串。
postgres=# SELECT string_to_array('foo,bar,baz,"baz,boo"', ','); string_to_array ------------------------------- {foo,bar,baz,"\"baz","boo\""} (1 row)
参考文献
- PostgreSQL文档: 数组函数