MySQL如何匹配JSON中的某个字段!
MySQL如何匹配JSON中的某个字段!
在MySQL数据库中,可以通过JSON_EXTRACT函数或->>运算符查询JSON类型字段内特定键的值,例如,使用JSON_EXTRACT(data, '$.name')或data->>'$.name'从data字段中提取name键的值,并用于比较得到name为"张三"的记录。
mysql匹配JSON中的某个字段
表中有一个字段,它的类型是JSON,我想要匹配这个JSON串中的某个字段的值
在 MySQL 中,如果某个字段是 JSON 类型,并且你需要查询 JSON 数据中 name 等于 "张三" 的所有记录,
可以使用JSON_EXTRACT函数或 ->> 运算符来提取 JSON 数据中的值,然后在 WHERE 子句中进行过滤。
假设你有一个表 users,其中有一个字段 data 是 JSON 类型,并且 JSON 数据的结构如下:
|
1
2
3
4
|
{"name": "张三","age": 30} |
你可以使用以下两种方法来查询 name 为 “张三” 的记录。
方法 1: 使用 JSON_EXTRACT
|
1
2
3
|
SELECT * FROM users WHERE JSON_EXTRACT(data, '$.name') = '张三'; |
方法 2: 使用 ->> 运算符
|
1
2
3
|
SELECT * FROM users WHERE data->>'$.name' = '张三'; |
解释
JSON_EXTRACT(data, '$.name'):从 JSON 字段 data 中提取 name 的值。
->> '$.name':这是 MySQL 的简化语法,用于直接提取 JSON 中的某个键的值,并以字符串形式返回。
注意:
- 这两种方法返回的值都是字符串,因此在 WHERE 子句中直接比较即可。
- 如果 name 键不总是存在或者存在多个相同的键(例如一个数组中的对象),则需要根据具体的 JSON 结构调整查询条件。
示例数据和查询
- 假设表 users 的结构如下:
|
1
2
3
4
|
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,data JSON); |
- 插入一些示例数据:
|
1
2
3
4
|
INSERT INTO users (data) VALUES('{"name": "张三", "age": 30}'),('{"name": "李四", "age": 25}'),('{"name": "王五", "age": 28}'); |
- 查询 name 为 “张三” 的记录:
|
1
2
3
|
SELECT * FROM users WHERE data->>'$.name' = '张三'; |
这个查询将返回第一条记录。
总结
以上为个人经验,希望能给大家一个参考。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

