美文网首页
Mysql中查询json字段中某个值

Mysql中查询json字段中某个值

作者: 上善丨若水 | 来源:发表于2020-09-22 19:04 被阅读0次
mysql> SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name');
+---------------------------------------------------------+
| JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') |
+---------------------------------------------------------+
| "Aztalan"                                               |
+---------------------------------------------------------+

单个json查询

表字段:
id info created_at
1 ["Alx","Bob"] 2020-09-22 19:00:00
select * from 表名 where json_contains(查询的字段, json_array('查询的数据'));
举例:
select * from table where json_contains(info, json_array('Alx'));
表字段:
id info created_at
1 {"name": "Alx", "age": 12} 2020-09-22 19:00:00
2 {"name": "Bob", "age": 12} 2020-09-22 19:00:00
模糊搜索
SELECT * FROM 表名 WHERE json_extract(字段名,"$.json中key") like '%搜索值%';
举例:
SELECT * FROM table WHERE json_extract(info,"$.name") like '%Bob%';
SELECT * FROM 表名 WHERE json_extract(字段名,"$.json中key") = '搜索值';
举例:
SELECT * FROM table WHERE json_extract(info,"$.name") = 'Bob';

数组json查询

表字段:
id info created_at
1 [{"name": "Alx", "age": 12},{"name": "Bob", "age": 12}] 2020-09-22 19:00:00
2 [{"name": "Bob", "age": 12},{name": "Tim", "age": 12}] 2020-09-22 19:00:00
模糊搜索
SELECT * FROM 表名 WHERE json_extract(字段名,"$[0].json中key") like '%搜索值%';
举例:
SELECT * FROM table WHERE json_extract(info,"$[0].name") like "%Bob%";
SELECT * FROM 表名 WHERE json_extract(字段名,"$[0].json中key") = '搜索值';
举例:
SELECT * FROM table WHERE json_extract(info,"$[0].name") = "%Bob%";

注:MySQL版本5.7及以上

相关文章

网友评论

      本文标题:Mysql中查询json字段中某个值

      本文链接:https://www.haomeiwen.com/subject/azfgyktx.html