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

如何在MySQL中删除JSON数组内name为null的对象(无需存储过程)

解决MySQL JSON数组删除指定对象的问题

直接用MySQL 8.0+支持的JSON函数就能实现单条UPDATE语句完成需求,无需存储过程:

UPDATE Table1
SET ColumnB = (
    SELECT JSON_ARRAYAGG(obj)
    FROM JSON_TABLE(
        Table1.ColumnB,
        '$[*]' COLUMNS (
            obj JSON PATH '$',
            name VARCHAR(255) PATH '$.name' NULL ON EMPTY
        )
    ) AS jt
    WHERE name IS NOT NULL
)
WHERE JSON_CONTAINS_PATH(Table1.ColumnB, 'one', '$[*].name') = 1
  AND JSON_SEARCH(Table1.ColumnB, 'one', 'null', NULL, '$[*].name') IS NOT NULL;

关键部分解析:

  • JSON_TABLE:把ColumnB里的JSON数组拆成逐行记录,每行包含完整的数组对象obj,以及该对象的name字段值(若对象无name字段,NULL ON EMPTY会返回null)。
  • JSON_ARRAYAGG:将过滤后保留的对象重新拼接成新的JSON数组,替换原ColumnB的值。
  • WHERE子句:仅更新确实存在name为null对象的记录,避免对无修改需求的行执行无效更新,提升执行效率。

版本要求:

必须使用MySQL 8.0.4及以上版本,因为JSON_TABLE函数是在该版本中引入的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:10:57