I have some columns in PostgreSQL database that are array. I want to add a new value (in UPDATE) in it if the value don't exists, otherwise, don't add anytihing. I don't want to overwrite the current value of the array, but only add the element to it.
Is possible do this in a query or I need to do this inside a function? I'm using PostgreSQL.
This should be as simple as this example for an integer array ( integer[]
):
UPDATE tbl SET col = col || 5
WHERE (5 = ANY(col)) IS NOT TRUE;
A WHERE
clause like:
WHERE 5 <> ALL(col)
would also catch the case of an empty array '{}'::int[]
, but fail if a NULL
value appears as element of the array.
If your arrays never contain NULL as element, consider actual array operators , possibly supported by a GIN index.
UPDATE tbl SET col = col || 5
WHERE NOT col @> '{5}';
See:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.