web-dev-qa-db-ja.com

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

これは、この操作の実行方法に関するドキュメントで提示されている形式と同じ形式だと思います。

8
Kyle K

使用する 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}
7

私はこの方法が好きです:

UPDATE table1 SET integer_array = integer_array || '{10}';

単一のクエリで複数の値を追加することもできます。

UPDATE table1 SET integer_array = integer_array || '{10, 11, 12}';
0
Marat Safin
-- 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;

乾杯