实例
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方法
Name | Description |
---|---|
-> | 计算路径后从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函数
Name | Description |
---|---|
JSON_ARRAYAGG | 将多行数据组合成json数组 |
JSON_OBJECTAGG | 将多行数据组合成json对象 |
JSON_ARRAYAGG、JSON_OBJECTAGG 跟GROUP_CONCAT函数效果大致差不多,GROUP_CONCAT是把所有数据聚合通过都好分割,JSON_ARRAYAGG、JSON_OBJECTAGG 这两个函数是组合成数组和对象