SQL Update Concat Array - PullRequest
       10

SQL Update Concat Array

0 голосов
/ 17 мая 2018

Я пытаюсь добавить значения в существующий массив столбцов целых чисел. Я использую этот запрос.

UPDATE users SET conversations_id = CONCAT(conversations_id, '{2,3}');

и это дает мне эту ошибку.

ERROR:  column "conversations_id" is of type integer[] but expression is of 
type text
LINE 1: UPDATE users SET conversations_id = CONCAT(conversations_id,...
                                        ^
HINT:  You will need to rewrite or cast the expression.
SQL state: 42804
Character: 37

Я понимаю, что это говорит мне, что вторым аргументом является текст, но он требует, чтобы он был написан таким образом, как здесь.

UPDATE users SET conversations_id = '{1,2,3}';

Я пытался привести второй аргумент к массиву, но я не уверен как. Я также попытался пометить его как VARIADIC, но опять же, я не знаю, как это сделать в этом случае.

Как добавить новые значения в этот массив?

1 Ответ

0 голосов
/ 17 мая 2018

Как указано в руководстве , оператор для добавления массива в другой массив - это либо ||, либо функция array_cat(). concat() - это только для значений text / varchar.

Так что вам нужно использовать:

UPDATE users 
   SET conversations_id = conversations_id || '{2,3}'::int[];

или

UPDATE users 
   SET conversations_id = array_cat(conversations_id, '{2,3}'::int[]);
...