PostgreSQL:仅当元素唯一时才将元素追加到jsonb数组
我创建了一个PostgreSQL(v10.0),如下所示PostgreSQL:仅当元素唯一时才将元素追加到jsonb数组,sql,json,postgresql,jsonb,Sql,Json,Postgresql,Jsonb,我创建了一个PostgreSQL(v10.0),如下所示 CREATE TABLE test (id INT, animals jsonb) INSERT INTO test VALUES (1, '["[monkeys, 10]", "[hamsters, 7]", "[foxes, 3]"]'), (2, '["[monkeys, 10]", "[hamsters, 7]", "[foxes, 3]"]') 然后我添加了一个新的动物,如下所示: UPDATE test SET
CREATE TABLE test (id INT, animals jsonb)
INSERT INTO test VALUES
(1, '["[monkeys, 10]", "[hamsters, 7]", "[foxes, 3]"]'),
(2, '["[monkeys, 10]", "[hamsters, 7]", "[foxes, 3]"]')
然后我添加了一个新的动物,如下所示:
UPDATE test
SET animals = animals || '["[hamsters, 7]"]'::jsonb
WHERE id = 1;
但是,仅当元素尚未在数组中时,我才想附加该元素。您可以使用附加的
WHERE
子句:
UPDATE test
SET animals = animals || '["[hamsters, 7]"]'::jsonb
WHERE id = 1 AND animals ~ '"\[hamsters, \d\]"'
这里我不使用jsonb,而是使用正则表达式。为了避免嵌套数组,因为“[仓鼠,7]”“
本身无论如何都不是数组-只是一个字符串,所以我比较了字符串操作符