You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQLite表的array类型列中批量移除指定字符串元素

SQLite 删除JSON数组中的指定元素

要批量删除SQLite表events中domain列(JSON格式字符串数组)里的所有"google"元素,推荐使用SQLite原生JSON函数解析并重组数组,避免字符串替换的局限性,具体方案如下:

正确的更新语句

UPDATE events
SET domain = (
  SELECT json_group_array(value)
  FROM json_each(events.domain)
  WHERE value != 'google'
)
WHERE domain LIKE '%"google"%';

语句说明

  • json_each(events.domain):将每行的JSON数组拆分为单个元素的行集,逐个访问数组内的每个值
  • WHERE value != 'google':过滤掉所有等于"google"的元素
  • json_group_array(value):把过滤后的元素重新组合成新的JSON数组
  • 外层WHERE domain LIKE '%"google"%':仅更新包含"google"的行,减少无意义的计算开销

为什么之前的方法不可靠

  • json_remove:该函数必须指定元素的索引位置,无法直接通过元素值匹配删除,直接传入"google"会触发语法错误
  • REPLACE字符串替换:依赖数组的字符串格式(比如元素后的逗号),当"google"位于数组末尾时因无后续逗号会失效,还可能误删包含"google"子串的其他元素(如"google.com"),稳定性差

边界情况处理

  • 若数组原本仅包含["google"],执行后会变为[]空数组
  • 若数组内存在多个"google"元素,所有匹配项都会被删除

内容的提问来源于stack exchange,提问作者charnould

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:52:37