本章主要讲解 MySQL8 数据库的 JSON 数据类型和相关的 JSON 语法,例如使用 JSON 函数进行创建、修改、搜索和查看属性等操作,以下每一个 JSON 函数都有一个在线示例可以参考,不同的在线示例根据作用进行分类介绍。
json_array 函数
# 创建一个 JSON 数组 select json_array(123, 'try8', null, false);
json_object 函数
# 创建一个 JSON 对象 select json_object('try8_id', 1, 'try8_name', '试试吧');
json_quote 函数
# 通过双引号创建一个 JSON 字符串 select json_quote('"null"');
json_arrayagg 函数
# 通过指定列或者表达式的值聚合成一个 JSON 数组 select try8_col1, json_arrayagg(try8_col2) from try8_tb group by try8_col1;
json_objectagg 函数
# 通过指定列或者表达式的值聚合成一个 JSON 对象 select try8_name, json_objectagg(try8_col1, try8_col2) from try8_tb group by try8_name;
json_contains 函数
# 检查一个 JSON 文档是否包含另外一个 JSON 文档 select json_contains('[1, 2, {"try8": 3}]', '1')
json_contains_path 函数
# 检查一个 JSON 文档在指定的路径上是否有值存在 # one 参数:至少存在一个路径则返回 1 select json_contains_path('{"a": 1, "b": 2, "c": {"d": 4}}', 'one', '$.a', '$.b'); # all 参数:如果存在全部路径则返回 1 select json_contains_path('{"a": 1, "b": 2, "c": {"d": 4}}', 'all', '$.a', '$.e');
json_extract 函数
# 在 JSON 文档中提取并返回路径表达式指定的数据 select json_extract('[1, 2, {"try8": 3}]', '$[2]');
-> 和 ->> 运算符
# 返回带双引号的结果 select try8_col->'$.json_col' from try8_tb where 1 = 1; # 返回不带双引号的结果 select try8_col->>'$.json_col' from try8_tb where 1 = 1;
json_keys 函数
# 返回指定 JSON 对象最上层键成员的数组 select json_keys('{"x": 1, "y": 2, "z": 3}');
json_overlaps 函数
# 检测 2 个 JSON 文档是否拥有相同的键值对或数组 select json_overlaps('[1, 2, 3]', '[3, 4, 5]');
json_search 函数
# 返回一个给定字符串在一个 JSON 文档中的路径 select json_search('{"x": 1, "y": 2}', 'one', '1'), json_search('{"x": 1, "y": 2}', 'all', '1');
json_value 函数
# 从一个给定 JSON 文档中提取并返回指定路径的值 select json_value('[{"id": 1, "name": "try8_1"}, {"id": 2, "name": "try8_2"}]', '$[0].name');
member of 函数
# 检查一个指定的值是否是一个 JSON 数组中的元素 select 1 member of('[1, "a"]'), 'a' member of('[1, "a"]');
json_array_append 函数
# 将指定的 JSON 数组最后位置追加一个值并返回修改后的 JSON 文档 # 为当前 JSON 文档追加 select json_array_append('[1, 2, 3]', '$', 4); # 为指定路径的 JSON 文档追加 select json_array_append('1, [2, 3]', '$[1]', 4); # 为指定元素的 JSON 文档追加 select json_array_append('{"name": ["hello"]}', '$.name', "try8");
json_array_insert 函数
# 将指定的 JSON 数组指定位置插入一个值并返回修改后的 JSON 文档 select json_array_insert('[1, [2, 3]]', '$[0]', 0);
json_insert 函数
# 将指定的 JSON 文档插入数据并返回修改后的 JSON 文档 select json_insert('[1, [2, 3], {"a": [4, 5]}]', '$[3]', 6);
json_merge 函数
# 合并多个 JSON 文档并返回合并后的 JSON 文档 select json_merge('[1, 2]', '[2, 3]', '[3, 4, 5]');
json_merge_patch 函数
# 替换合并多个 JSON 文档并返回合并后的 JSON 文档 select json_merge_patch('{"x": 1, "z": 3}', '{"x": 2, "y": 3}');
json_merge_preserve 函数
# 合并多个 JSON 文档并返回结果,支持合并数组、对象和纯值 # 合并数组 select json_merge_preserve('[1, 2]', '[2, 3]', '[3, 4, 5]'); # 合并对象 select json_merge_preserve('{"x": 1}', '{"x": 2, "y": 3}'); # 合并纯值 select json_merge_preserve('1', 'true', '"hello"', 'null'); # 合并数组和对象示例 select json_merge_preserve('{"x": 1}', '[1, 2, 3]');
json_remove 函数
# 从一个 JSON 文档中删除指定数据并返回新的 JSON 文档 # 从数组中删除 select json_remove('[0, 1, 2, [3, 4]]', '$[0]', '$[2]'); # 从对象中删除 select json_remove('{"x": 1, "y": 2}', '$.x');
json_replace 函数
# 从一个 JSON 文档中替换已存在的数据并返回新的 JSON 文档 select json_replace('[1, [2, 3]]', '$[0]', 0);
json_set 函数
# 从一个 JSON 文档中插入或替换数据并返回新的 JSON 文档 select json_set('{"x": 1}', '$.x', '10', '$.y', '20');
json_unquote 函数
# 从一个 JSON 文档中取消双引号并返回新的 JSON 文档 select json_unquote('"try8"');
json_depth 函数
# 返回 JSON 文档最大的深度 select json_depth('{}');
json_length 函数
# 返回 JSON 文档的长度 select json_depth('{"try8": "试试吧"}');
json_type 函数
# 返回 JSON 文档的类型 select json_type('{"try8": "试试吧"}');
json_valid 函数
# 检测 JSON 文档有效性 select json_valid('{"try8": "试试吧"}');
MySQL8教程 - MySQL8 JSON 语法,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 JSON 创建语法开始,逐步到 JSON 函数示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。
《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。