MySQL8 JSON 语法

MySQL8 JSON 语法,MySQL8教程,介绍 MySQL8 JSON 语法与示例。

【全栈教程】:https://try8.cn/article
教程目录:
教程内容:
最近更新:2023-04-17

一、MySQL8 JSON 语法

本章主要讲解 MySQL8 数据库的 JSON 数据类型和相关的 JSON 语法,例如使用 JSON 函数进行创建、修改、搜索和查看属性等操作,以下每一个 JSON 函数都有一个在线示例可以参考,不同的在线示例根据作用进行分类介绍。


1.1、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;


1.2、JSON 搜索

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"]');


1.3、JSON 修改

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"');


1.4、JSON 属性

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 JSON 语法 总结

MySQL8教程 - MySQL8 JSON 语法,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 JSON 创建语法开始,逐步到 JSON 函数示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。


《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。