2011-11-11 12 views
2

PostgreSQLデータベースに配列であるカラムがあります。値が存在しない場合は、新しい値(UPDATE内)を追加する必要があります。それ以外の場合は、追加しないでください。配列の現在の値を上書きするのではなく、要素を追加するだけです。PostgreSQLアレイの値を更新する

これはクエリで実行できますか、これを関数内で行う必要がありますか?私はPostgreSQLを使用しています。私は右のあなたを理解していれば

答えて

6

が、これはinteger[]

UPDATE tbl SET col = col || 5 
WHERE (5 = ANY(col)) IS NOT TRUE; 

ため、この例のように単純である必要があり、この

WHERE 5 <> ALL(col) 
よう WHERE

また、空の配列の場合をキャッチします'{}'::int[]ですが、NULLの値が配列の要素として表示された場合は失敗します。

+0

'UPDATE token SET文法=文法|| 'JUNCTION' WHERE( 'JUNCTION' = ANY(文法))は真ではありません。 ' これは私のケースで修正されたSQLですが、 'grammar || 'JUNCTION' '。配列の型は 'VARCHAR'です。 –

+0

ありがとう、働いていますが、varcharに変換する必要があります。 '... grammar =文法|| 'JUNCTION' :: VARCHAR'。 –

関連する問題