如何从PostgreSQL 8.4中的string_to_array()返回一个元素?

时间:2010-08-05 18:42:44

标签: arrays postgresql

我想用以下类型的值解析字段:

“DAVE EBERT CONSTRUCTION~139 LENNOX STREET~SANTA CRUZ,CA 95060 ~~商业电话:(831)818-3170”

我想进行如下查询:

Update mytable set street = string_to_array(myfield,'~')[2]

但是string_to_array不会“返回”一个数组,所以它不能以这种方式链接。但是,它确实返回一个数组,可以被其他函数使用,这些函数接受像array_upper()这样的数组,因此我不知道为什么它不起作用。

我的解决方法是创建一个数组字段并执行以下操作:

Update mytable set myfield_array = string_to_array(myfield,'~')
Update mytable set street = myfield_array[2]

有更直接的方法吗?但同样,如果我提取了很多不同的数组元素,那么直接的方式可能会更好,因为你只将字符串转换为数组一次?

2 个答案:

答案 0 :(得分:14)

...试

Update mytable set street = (string_to_array(myfield,'~'))[2]

您只需要这些括号。

答案 1 :(得分:3)

使用一些额外的():

Update mytable set street = (string_to_array(myfield,'~'))[2]