如何从SQLite表中的任何地方的数组中删除字符串元素?

tquggr8v  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(108)

考虑一个SQLite表,其中一列(名为domain)是stringsarray,没有特定的索引/顺序。
示例:["google", "apple", "twitter"]
如何更新all表以删除所有google项?
在我的例子中,结果应该是["apple", "twitter"]
我从以下内容开始:

UPDATE events
SET domain = json_remove(domain, "google")

字符串
但是(1)它不起作用,(2)似乎我必须将indexjson_remove一起使用。
看这个DBFiddle
编辑
我试着:

UPDATE events
SET domain = REPLACE(domain, '"google", ', '')
WHERE domain LIKE '%"google"%';


...但是引号转义很难,如果google在数组的末尾(=没有,),它就不起作用。

wnvonmuf

wnvonmuf1#

将json数组作为字符串操作是棘手的,但它是可行的:

UPDATE events
SET domain = '[' || TRIM(REPLACE(',' || TRIM(json(domain), '[]') || ',', ',' || '"google"' || ',', ','), ',') || ']'
WHERE domain LIKE '%"google"%';

字符串
参见demo

相关问题