【问题标题】:PostgreSQL: append element to jsonb array only if element is uniquePostgreSQL:仅当元素唯一时才将元素附加到 jsonb 数组
【发布时间】:2018-04-28 11:13:32
【问题描述】:

我创建了一个 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 animals = animals || '["[hamsters, 7]"]'::jsonb
WHERE id = 1;

但是,我只想在元素尚未在数组中时才附加该元素。

【问题讨论】:

    标签: sql json postgresql jsonb


    【解决方案1】:

    你可以使用额外的WHERE 子句:

    UPDATE test
    SET animals = animals || '["[hamsters, 7]"]'::jsonb
    WHERE id = 1 AND animals ~ '"\[hamsters, \d\]"'
    

    这里我不使用jsonb,而只是使用正则表达式。避免嵌套数组,因为 "[hamsters, 7]" 本身无论如何都不会是数组 - 只是一个字符串,所以我与字符串运算符进行比较...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2015-08-20
      • 2023-03-27
      • 2020-11-11
      • 2021-07-04
      • 2012-10-21
      相关资源
      最近更新 更多