博客列表 >数据库某个字段为二维数组json格式里的字段数据如何查询

数据库某个字段为二维数组json格式里的字段数据如何查询

雨天的小草的博客
雨天的小草的博客原创
2022年08月08日 10:39:181011浏览

一、 场景如下:

数据表:父订单表 order_parent
字段:优惠明细 discount_detail(格式:json,例子
  1. [{"id": 157, "tip": "Coupon", "name": "优惠券"}])
目的:查询discount_detail中tip为指定值的所有数据,以统计营销活动相关支出(如优惠券Coupon)

二、探索过程:

通过查询网上资料得知,json一维数组格式([1,2,3])可以用mysql函数 json_contains 通过
  1. where json_contains(表字段,"要查询的值"

查询;嵌套数组格式({“id”:{“name”:”张三”}})查询name为张三 采用

  1. where json_contains(表字段,"张三", '$."id"."name"')
但是对于格式形如[{“id”: 157, “tip”: “Coupon”, “name”: “优惠券”}],这样的二维数组,一般的查询方法都不能生效

三、最终结果:

依然可以用 json_contains,不过里面要额外用一个函数 json_array 或者 json_object
完整查询语句如下:
  1. select * from order_parent where json_contains(discount_detail->'$[*].tip',json_array("Coupon"),'$')
或者
  1. select * from order_parent where json_contains(discount_detail, json_object("tip", "Coupon"))
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
red hat2024-05-07 09:45:151楼
感谢大哥分享