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 文档: 数组函数