mysql从5.7起支持JSON类型,提供json_OBJECT、JSON_ARRAY插入数据,JSON_EXTRACT和->、->>查询,JSON_SET、JSON_INSERT、JSON_REPLACE、JSON_REMOVE修改,JSON_VALID、JSON_CONTaiNS、JSON_OVERLAPS验证与判断,路径以$开头,支持对象和数组操作。
MySQL从5.7版本开始支持JSON数据类型,提供了丰富的函数来操作JSON字段。这些函数可以帮助你创建、查询、修改和验证JSON数据。下面介绍常用的JSON函数及其用法。
插入和创建JSON数据
你可以使用JSON_OBJECT、JSON_ARRAY或直接插入合法的JSON字符串。
示例:

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

INSERT INTO users (info) VALUES (JSON_OBJECT(‘name’, ‘张三’, ‘age’, 25));
INSERT INTO tags (data) VALUES (JSON_ARRAY(‘mysql‘, ‘json’, ‘database’));
查询JSON字段中的值
使用JSON_EXTRACT或 -> 和 ->> 操作符提取数据。
- JSON_EXTRACT(json_col, path):根据路径提取值,返回带引号的JSON格式。
- col->”$.path”:等同于JSON_EXTRACT,返回JSON格式。
- col->>”$.path”:返回去引号的纯文本值。
示例:
select JSON_EXTRACT(info, ‘$.name’) FROM users;
SELECT info->”$.age” AS age FROM users;
SELECT info->>”$.name” AS name FROM users;
修改JSON数据
使用JSON_SET、JSON_INSERT、JSON_REPLACE、JSON_REMOVE等函数更新JSON内容。
- JSON_SET:设置值,如果键存在则更新,否则添加。
- JSON_INSERT:插入值,仅当键不存在时生效。
- JSON_REPLACE:替换值,仅当键存在时生效。
- JSON_REMOVE:删除指定路径的元素。
示例:
UPDATE users SET info = JSON_SET(info, ‘$.age’, 26, ‘$.city’, ‘北京’);
UPDATE users SET info = JSON_REMOVE(info, ‘$.temp_flag’);
判断和验证JSON
使用以下函数确保数据合法性或进行条件判断。
- JSON_VALID(json_string):检查字符串是否为有效JSON,返回1或0。
- JSON_CONTAINS(json_col, target, path):判断JSON是否包含指定值。
- JSON_OVERLAPS(a, b):判断两个JSON数组是否有相同元素。
示例:
SELECT * FROM users WHERE JSON_CONTAINS(info, ‘”北京”‘, ‘$.city’);
SELECT JSON_VALID(‘{“name”: “test”}’); — 返回1
基本上就这些常用操作。掌握这些函数后,就能在MySQL中灵活处理JSON数据了。注意路径表达式以$
开头,.key
表示对象属性,[index]
表示数组元素。不复杂但容易忽略细节。
评论(已关闭)
评论已关闭