最近用到了mysql5.7的json字段的检索查询,发现挺好用的,记录一下笔记
我们有一个日志表,里面的data字段是保存不同对象的json数据,遇到想根据里面的json的字段内容作为条件查询的情况
mysql根据json字段的内容检索查询数据
-
使用 字段->'$.json属性'进行查询条件
-
使用json_extract函数查询,json_extract(字段,"$.json属性")
-
根据json数组查询,用JSON_CONTAINS(字段,JSON_OBJECT('json属性', "内容"))
查询json数组里面对象的id等于142的记录
用JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, “内容”))
ThinkPHP5.1 只能查询 Json格式 不能查询json数组格式
所以只能写原生SQL
// approval 代表表字段 id表示 json字段 4表示值
SELECT * FROM zyy_portal_approval WHERE id = 1 AND json_contains(approval->'$[*].id','4')