我正在嘗試從 json 陣列中洗掉一個值,但是我遇到了問題。
首先,我將陣列插入到表中,如下所示:
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;
uj5u.com熱心網友回復:
您用作路徑引數的子查詢json_remove()回傳null您第二次執行更新陳述句,因為"World"json 陣列中沒有。
在這種情況下json_remove()也回傳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';
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448971.html
上一篇:SQL-在不使用COUNT()的情況下計算ID在另一個表中的次數
下一篇:SQL選擇和計數在同一個查詢中
