Mysql 提取JSON数组中的某一个属性或某一个属性列表

场景:

       昨天为解决业务需求,需要在mysql 数据库中类型为json字段的列中提取指定的属性列表,因为之前对mysql数据库中操作json数据的经验比较少,特此记录下,以备以后回顾。

 

    首先,展示下我数据库中保存的数据 (数据已做脱敏处理)

[{"id": "dad014a2f9594a62ae3f7be3", "del": 10, "code": "XC02104162990","orgId": "5e0364ff8139f600163ff", "state": 10, "staffId": "1b8cc278f7673793327fed0", "subjectId": "f107fe51abf9410df07a1a", "categoryId": "ef15a801af84ac6e1cef2", "createDate": 1618553801000, "createTime": 1618553801000, "totalAmount": 0, "salaryPeriod": 1617206400000, "createStaffId": "008e97367f600163e14efff"}, {"id": "4dd2f82b9a3f182ec", "del": 10, "code": "XC202104163517", "orgId": "5e0364ff81f600163e14efff", "state": 10, "staffId": "1b8cc20c8793327fed0", "subjectId": "cb0f52a4e0d71aed75f37a156", "categoryId": "ef15a4e581de4fac6e1cef2", "createDate": 1618553800000, "createTime": 1618553800000, "totalAmount": 0, "salaryPeriod": 1617206400000, "createStaffId": "008e97367f8e11e14efff"}]

  业务需求,提取上述数据中的 subjectId 字段列表,实现sql如下:

SELECT json_extract( subject_json, '$[*].subjectId' ) AS subjectIds FROM  t; 

执行结果: ["f107fe51abf9410df07a1a", "cb0f52a4e0d71aed75f37a156"]  ,获得上述JSONArray 中每一个 JsonObject 中 key为  subjectId 的值数组

解析:

  1. subject_json 为上述数据所在字段。
  2. json_extract :mysql版本5.7及以上,用于取出 json 串中某个key对应的值

         $[*].subjectId 表示获取当前字段内容下的所有 subjectId,如果只是想获取某一条,可以带上当前数据在数组中的序号获取,

         比如:获取 第一条中的 subjectId ,$[1].subjectId

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值