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

PostgreSQL检查json值是否含指定属性并删除对应数据行

操作需求
  • 目标:根据表中JSON类型的details列的字段特征,删除符合条件的数据行
  • details列存储的JSON结构示例:
{
  "tax": 0, 
  "note": "", 
  "items": [
     {
       "price": "100", 
       "quantity": "1", 
       "description": "Test"
     }
  ]
}
  • 删除判定规则:当details列下items数组内的对象不包含name字段时,删除对应行

前置规则:items数组内的所有对象字段结构完全一致,要么全部包含name字段,要么全部不包含该字段,无需处理数组内字段结构不统一的场景

实现方法(以MySQL 5.7及以上版本为例,其他支持JSON路径查询的数据库逻辑通用)

利用给定的前置规则,不需要遍历整个items数组,只需要判断数组第一个元素是否存在name字段即可完成判定。

  1. 先执行查询语句校验待删除的数据,避免误删:
-- 把your_table替换成你实际的表名
SELECT * FROM your_table
WHERE details->'$.items[0].name' IS NULL;
  1. 确认查询出的结果都是需要删除的数据后,执行删除语句:
DELETE FROM your_table
WHERE details->'$.items[0].name' IS NULL;

如果你的环境不支持->简写语法,可以用标准JSON函数写法,效果完全一致:

DELETE FROM your_table
WHERE JSON_EXTRACT(details, '$.items[0].name') IS NULL;

内容的提问来源于stack exchange,提问作者Toni Bardina Comas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:01:08