Как мне вернуть один элемент из string_to_array () в PostgreSQL 8.4? - PullRequest
4 голосов
/ 05 августа 2010

Я хочу проанализировать поле со следующим типом значения:

"ДЭЙВ ЭБЕРТ КОНСТРУКШН ~ 139 УЛИЦА ЛЕННОКС ~ САНТА-КРУЗ, 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 ]

14 голосов
/ 05 августа 2010

Try ...

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

Тебе просто нужны эти скобки.

3 голосов
/ 05 августа 2010

Используйте некоторые дополнительные ():

Update mytable set street = (string_to_array(myfield,'~'))[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...