Добавление значения к целочисленному массиву Postgres
Я ищу помощь в добавлении стоимости 10
для int[]
в PostgreSQL 9.5.
Глядя на документацию, я смогу использовать этот формат для его обновления, но он не работает:
int[] + int push element onto array (add it to end of array)
Я попытался запустить это:
update table1 set integer_array = integer_array + 10::Integer.
Это не сработало, и я получил эту ошибку:
ERROR: operator does not exist: integer[] + integer
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: 67
Я чувствую, что это тот же формат, который представлен в документации о том, как выполнить эту операцию.
1 ответ
Использование array_append
функция для добавления элемента в конец массива:
UPDATE table1
SET integer_array = array_append(integer_array, 5);
5 - это значение выбора, в вашем случае это целочисленный тип данных. Вам, вероятно, нужно немного WHERE
пункт, а не обновлять всю таблицу.
Попробуйте ниже, чтобы увидеть, как это работает:
SELECT ARRAY[1,2], array_append(ARRAY[1,2],3);
Результат:
array | array_append
-------+--------------
{1,2} | {1,2,3}
Мне нравится этот способ лучше:
UPDATE table1 SET integer_array = integer_array || '{10}';
Вы также можете добавить несколько значений одним запросом:
UPDATE table1 SET integer_array = integer_array || '{10, 11, 12}';
Один:
UPDATE table1
SET integer_array = array_append(integer_array, 3);
несколько:
UPDATE table1
SET integer_array = array_cat(integer_array, ARRAY[4,5]);
-- Declaring the array
arrayName int8[];
-- Adding value 2206 to int array
arrayName := arrayName || 2206;
-- looping throught the array
FOREACH i IN ARRAY arrayName
LOOP
RAISE NOTICE 'array value %', i;
END LOOP;
ура