MySQL——12.18 JSON 函数

12.18.1 MySQL 的 JSON 函数概览

->
# 计算路径后,从 JSON 列返回值,相当于 JSON_EXTRACT()

->>
# 计算路径并取消引用结果后,从JSON列返回值,相当于 JSON_UNQUOTE(JSON_EXTRACT())

JSON_APPEND()
# 插入数据到 JSON 文档中

JSON_ARRAY()
# 创建 JSON 数组

JSON_ARRAY_APPEND()
# 插入数据到 JSON 文档中

JSON_ARRAY_INSERT()
# 插入数据到 JSON 数组中

JSON_CONTAINS()
# 查询 JSON 文档在路径处,是否包含具体对象

JSON_CONTAINS_PATH()
# 查询 JSON 文档在路径处,是否包含任意数据

JSON_DEPTH()
# 查询 JSON 文档的最大深度值

JSON_EXTRACT()	
# 查询 JSON 文档中的数据

JSON_INSERT()	
# 插入数据到 JSON 文档中

JSON_KEYS()	
# 查询 JSON 文档中的数组的键

JSON_LENGTH()
# 查询 JSON 文档中的元素数量

JSON_MERGE()
# 合并 JSON 文档,保留重复的键值,JSON_MERGE_PRESERVE() 的不推荐同义词
# 适用版本 >=5.7.22

JSON_MERGE_PRESERVE()
# 合并 JSON 文档,保留重复的键值
# 适用版本 >=5.7.22

JSON_MERGE_PATCH()
# 合并 JSON 文档,替换重复的键值
# 适用版本 >=5.7.22

JSON_OBJECT()
# 创建 JSON 对象

JSON_PRETTY()
# 以可读格式打印 JSON 文档
# 适用版本 >=5.7.22

JSON_QUOTE()
# 引用 JSON 文档	

JSON_REMOVE()
# 删除 JSON 文档中的数据
	
JSON_REPLACE()
# 替换 JSON 文档中的数据的值

JSON_SEARCH()
# 查询 JSON 文档中值的路径

JSON_SET()	
# 插入数据到 JSON 文档中

JSON_STORAGE_SIZE()
# 用于存储 JSON 文档二进制表示形式的空间
# 适用版本 >=5.7.22

JSON_TYPE()
# 查询 JSON 值的类型

JSON_UNQUOTE()
# 取消引用 JSON 值

JSON_VALID()
# 查询 JSON 值是否有效

MySQL 5.7.22 以及更高版本支持2个聚合 JSON 函数 JSON_ARRAYAGG() 和 JSON_OBJECTAGG().。
可查看第 12.20 章节详细介绍,Aggregate Functions
从 MySQL 5.7.22 开始:

  • 可以使用 JSON_pretty() 函数以易于阅读的格式“漂亮地打印” JSON 值。
  • 可以使用 JSON_storage_SIZE() 查看给定 JSON 值占用的存储空间。

完整详细的描述,可以查看 12.18.6 章节,JSON Utility Functions

12.18.2 创建值的 JSON 函数 Create

12.18.3 查询值的 JSON 函数 Search

这章节的函数是对 JSON 值进行搜索操作,从中提取数据。返回数据是否存在于某路径,或者返回数据的路径。

JSON_CONTAINS(target, candidate[, path])

mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
mysql> SET @j2 = '1';
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
|                             1 |
+-------------------------------+
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.b');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.b') |
+-------------------------------+
|                             0 |
+-------------------------------+

mysql> SET @j2 = '{"d": 4}';
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
|                             0 |
+-------------------------------+
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.c');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.c') |
+-------------------------------+
|                             1 |
+-------------------------------+

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)

mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e') |
+---------------------------------------------+
|                                           1 |
+---------------------------------------------+
mysql> SELECT JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e') |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.c.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.c.d') |
+----------------------------------------+
|                                      1 |
+----------------------------------------+
mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a.d') |
+----------------------------------------+
|                                      0 |
+----------------------------------------+

JSON_EXTRACT(json_doc, path[, path] ...)

mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]');
+--------------------------------------------+
| JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]') |
+--------------------------------------------+
| 20                                         |
+--------------------------------------------+
mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]');
+----------------------------------------------------+
| JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]') |
+----------------------------------------------------+
| [20, 10]                                           |
+----------------------------------------------------+
mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[2][*]');
+-----------------------------------------------+
| JSON_EXTRACT('[10, 20, [30, 40]]', '$[2][*]') |
+-----------------------------------------------+
| [30, 40]                                      |
+-----------------------------------------------+

12.18.4 修改值的 JSON 函数 Modify

12.18.5 查询属性的 JSON 函数 Attributes

12.18.6 一些 JSON 的多功能函数 Utility

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值