当前位置:首页 > 编程开发 > PHP > 正文内容

mysql根据json字段内容作为查询条件(包括json数组),检索数据

Codefans2年前 (2021-10-22)PHP1249

最近用到了mysql5.7的json字段的检索查询,发现挺好用的,记录一下笔记

我们有一个日志表,里面的data字段是保存不同对象的json数据,遇到想根据里面的json的字段内容作为条件查询的情况


mysql根据json字段的内容检索查询数据

使用 字段->'$.json属性'进行查询条件

使用json_extract函数查询,json_extract(字段,"$.json属性")

根据json数组查询,用JSON_CONTAINS(字段,JSON_OBJECT('json属性', "内容"))



mysql5.7以上支持json的操作,以及增加了json存储类型

一般数据库存储json类型的数据会用json类型或者text类型


注意:用json类型的话

1)JSON列存储的必须是JSON格式数据,否则会报错。

2)JSON数据类型是没有默认值的。


查询根据表字段的json内容进行查询


首先创建表

create table log(
     id int not null,
 content varchar(255),
 createTime TIMESTAMP,
 data text
)

插入几个测试数据


执行查询sql

使用 字段->’$.json属性’进行查询条件

select  * from log where data->'$.id' = 142;


 select data->'$.id' id,data->'$.name' name from log where data->'$.id' = 142;



测试根据json数组的字段查询

1.再建一个表log2,插入几条json数组数据

[{
"id": "141",
"name": "xxx",
"type": "input"
},
  {
  "id": "142",
  "name": "xin",
  "type": "textarea"
  }
]


查询json数组里面对象的id等于142的记录


用JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, “内容”))

select * from log2 where JSON_CONTAINS(data,JSON_OBJECT('id', "142"))


扫描二维码推送至手机访问。

版权声明:本文由图慧网发布,如需转载请注明出处。

本文链接:http://www.tuh8.com/index.php?mod=article&act=view&id=9

分享给朋友:
返回列表

没有更早的文章了...

下一篇:mysql 中 find_in_set使用方法(细节)

“mysql根据json字段内容作为查询条件(包括json数组),检索数据” 的相关文章

php中命名空间(namespace)的作用和使用

php中命名空间(namespace)的作用和使用

1.命名空间的作用:在PHP中函数、类、常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间. 其实不仅仅是php,其他语言也有类似的使用。比如JavaScript中:我们来详细的讲解一下PHP中的命名空间:语法:namespace 空间名\空间名;说明: 用于定义空间名;如果一个php...

phpexcel导出文件内容空白或错误原因之一(存在乱码字符)的解决办法

public function illegal_unicode($str='') {     $txtcode=explode('\u',str_replace("\"&quo...

解决PHP中json_encode自动编码中文的问题

第一种:PHP版本高于5.4时,可以使用官方提供的方法,在括号内加一个参数JSON_UNESCAPED_UNICODE$data = json_encode($msg,JSON_UNESCAPED_UNICODE);第二种:所有版本可用方法,具体解决方法就是先将中文编码成url编...

阿里云虚拟主机php7.0自定义redis组件方法

阿里云虚拟主机php7.0自定义redis组件方法

1.下载适配7.0的redis.so文件点击此处下载提取码: hxtk或者自行百度寻找2.利用ftp将下载的redis.so上传至myfolder文件夹中3.登录阿里云打开云虚拟主机管理界面4.高级环境配置5.PHP和Zend扩展组件6.myfolder文件夹中逐级寻找刚刚上传的redis.so,并...