2013-05-28 17 views
10

У меня есть в таблице столбце, тип которого CHARACTER VARYING[] (т.е. массив)преобразование типов массивы

мне нужно конкатенации существовали строки ти другого массива

Это мой код:

UPDATE my_table SET 
col = array_cat(col, ARRAY['5','6','7']) 

вернулся ошибка: function array_cat(character varying[], text[]) does not exist

Ошибка причины в том, что типы массивов не совпадают правильно?

Вопрос: как преобразовать этот массив ARRAY['5','6','7'] как CHARACTER VARYING[] type?

ответ

25

В ролях на varchar[]:

> SELECT ARRAY['5','6','7']::varchar[], pg_typeof(ARRAY['5','6','7']::varchar[]); 

SELECT ARRAY['5','6','7']::varchar[], pg_typeof(ARRAY['5','6','7']::varchar[]); 
    array |  pg_typeof  
---------+--------------------- 
{5,6,7} | character varying[] 

Вы можете использовать PostgreSQL конкретные ::varchar[] или стандартный CAST(colname AS varchar[]) ... хотя, как массивы не соответствуют по реализации базы данных там не будет много преимуществ использования стандартного синтаксиса ,

+1

... это так просто! Благодаря! –