前言

最近公司在做一项用户数据调查,需要统计某个值得使用频率,由于之前这个值是以一个JSON字符串形式存储的,所以不能直接用传统的方式匹配,幸亏现在数据库才做了升级版本到了5.7以后(支持JSON查询),要是放在以前,只有模糊匹配了。

分析

查看涉及到的字段是一个JSON对象数组类型,匹配的条件是用到对象的某一个字段,自然而然的想到了JSON_CONTAINS 函数来解决。

select *,JSON_EXTRACT(字段,'$[*].数组对象字段名称') from table_name where JSON_CONTAINS(字段,JSON_OBJECT('json属性', "内容"))

实战

1 以产品表为例,创建name为测试字段

Mysql json数据实时解析 的JSON字段内容检索(1)

2 条件查询

Mysql json数据实时解析 的JSON字段内容检索(2)

3 获取数组里面对象的某个属性

Mysql json数据实时解析 的JSON字段内容检索(3)

演示视频

思考与总结

如果要取出数组中某一条数据,貌似MySQL就处理不了(如果大家有办法请评论一下),只有在内存中用java进行处理。所以如果涉及到查询条件的字段,不要以JSON数组的格式存储,将JSON数组拆分成一个表来单独存储。设计表时,千万不要为了图一时简单,为往后埋下坑。

,