Типы массивов конверсий

У меня есть столбец таблицы, тип которого 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[]?

Ответ 1

Вставить в 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[]

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