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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3418023/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-20 00:14:31  来源:igfitidea点击:

How do I return one element from string_to_array() in PostgreSQL 8.4?

arrayspostgresql

提问by Brad Mathews

I want to parse a field with the following type of value:

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

"DAVE EBERT CONSTRUCTION~139 LENNOX STREET~SANTA CRUZ, CA 95060~~Business Phone Number:(831) 818-3170"

“DAVE EBERT CONSTRUCTION~139 LENNOX STREET~SANTA CRUZ, CA 95060~~公司电话号码:(831) 818-3170”

I would like to do a query like:

我想做一个查询,如:

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

But string_to_array does not "return" an array so it can't be chained in this way. However, it does return an array that can be used by other functions that take arrays like array_upper() so I don't know why it would not work.

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

My workaround is to create an array field and do this:

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

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

Is there a more direct way to do this? But again, if I am extracting a lot of different array elements, maybe the less direct way performs better because you are converting string to array only once?

有没有更直接的方法来做到这一点?但同样,如果我要提取很多不同的数组元素,也许不那么直接的方法性能更好,因为您只将字符串转换为数组一次?

回答by rfusca

Try...

尝试...

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

You just need those parenthesis.

你只需要那些括号。

回答by Frank Heikens

Use some extra ():

使用一些额外的 ():

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