MySql JSON5.7函数、8.0新特性

实例

1、取值
1.JSON_EXTRACT 、JSON_UNQUOTE
SELECT
	JSON_UNQUOTE(JSON_EXTRACT ( a.NAME, "$[0].key" ) )
FROM
	( SELECT '[{"key":"a","value":"55"},{"key":"b","value":"55"},{"key":"c","value":"55"}]' AS NAME ) a;

优势:可以嵌套函数达到拼接取值地址的情况

SELECT
	JSON_EXTRACT (
		a.NAME,
	concat( "$[", 0, "].key" )) 
FROM
	( SELECT '[{"key":"a","value":"55"},{"key":"b","value":"55"},{"key":"c","value":"55"}]' AS NAME ) a;
2.-> 或 ->>
SELECT
	a.NAME -> "$[0].key",
	a.NAME ->> "$[0].key" 
FROM
	( SELECT '[{"key":"a","value":"55"},{"key":"b","value":"55"},{"key":"c","value":"55"}]' AS NAME ) a;

优势:可以快速去除双引号

2、获取JSON的属性
1.获取长度 JSON_LENGTH
	SELECT 	JSON_LENGTH(name)  from  ( SELECT '[{"key":"a","value":"55"},{"key":"b","value":"55"},{"key":"c","value":"55"}]' as name )a;
1.值是否有效 JSON_VALID 是:1,否0
	SELECT 	JSON_VALID(name)  from  ( SELECT '[{"key":"a","value":"55"},{"key":"b","value":"55"},{"key":"c","value":"55"}]' as name )a;

JSON 5.7方法

NameDescription
->计算路径后从JSON列返回值
->>计算路径后从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()合并保留
JSON_MERGE_PATCH()合并JSON文档,替换重复键的值
JSON_MERGE_PRESERVE()合并JSON文档,保留重复键
JSON_OBJECT()创建JSON对象
JSON_PRETTY()以可读格式打印JSON文档
JSON_QUOTE()引用JSON文档
JSON_REMOVE()从JSON文档中删除数据
JSON_REPLACE()替换JSON文档中的值
JSON_SEARCH()JSON文档中的值路径
JSON_SET()将数据插入JSON文档
JSON_STORAGE_SIZE()用于存储JSON文档的二进制表示的空间
JSON_TYPE()JSON值的类型
JSON_UNQUOTE()取消引用JSON值(去除双引号)
JSON_VALID()JSON值是否有效

8.0新特性

JSON函数
NameDescription
JSON_ARRAYAGG将多行数据组合成json数组
JSON_OBJECTAGG将多行数据组合成json对象

JSON_ARRAYAGG、JSON_OBJECTAGG 跟GROUP_CONCAT函数效果大致差不多,GROUP_CONCAT是把所有数据聚合通过都好分割,JSON_ARRAYAGG、JSON_OBJECTAGG 这两个函数是组合成数组和对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值