json_remove 在第二个 运行 上从数组中删除了错误的值

json_remove is removing the wrong value from array on second run

我正在尝试从 json 数组中删除一个值,但是我遇到了问题。

首先,我将数组插入到 table 中,如下所示:

INSERT into demo (hint) VALUES ('["Hello","World"]');

接下来,当我 运行 这个查询时, World 值被删除,这是应该发生的。但是,如果我第二次 运行 它,那么 Hello 值将被删除,这是不应该发生的。我做错了什么,或者从 json 数组中删除项目的更好方法是什么?

UPDATE demo SET hint = json_remove(
    hint,
    (SELECT json_each.fullkey FROM demo, json_each(demo.hint) WHERE json_each.value = 'World')
);

select * from demo;

作为json_remove() returns null 的路径参数的子查询第二次执行更新语句,因为没有"World" json数组。
在这种情况下 json_remove() 也 returns null.

如果您的 SQLite 版本是 3.33.0+,您可以使用 UPDATE...FROM 语法:

UPDATE demo AS d
SET hint = json_remove(d.hint, j.fullkey)
FROM json_each(d.hint) AS j
WHERE j.value = 'Hello';