MySQL对JSON类型的使用/查询/函数
一,对记录的操作
1.创建有json字段的表
1 | -- 创建表 |
2.插入记录
1 | -- 插入含有json数组的记录 |
3.查询记录
1 | -- 查询记录 |
4.修改记录
1 | -- 增加键 |
二,创建json值函数
1.JSON_ARRAY 生成json数组
1 | -- JSON_ARRAY(val1,val2,val3...) |
2.JSON_OBJECT 生成json对象
1 | -- JSON_OBJECT(key1,val1,key2,val2...) |
3.JSON_QUOTE 加”号
1 | -- JSON_QUOTE(json_val) |
三,搜索json值函数
1.JSON_CONTAINS 指定数据是否存在
1 | set @j = '{"a": 1, "b": 2, "c": {"d": 4}}'; |
2.JSON_CONTAINS_PATH 指定路径是否存在
1 | -- JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...) |
3.JSON_EXTRACT 查找所有指定数据
1 | -- JSON_EXTRACT(json_doc, path[, path] ...) |
4.JSON_KEYS 查找所有指定键值
1 | -- JSON_KEYS(json_doc[, path]) |
5.JSON_SEARCH 查找所有指定值的位置
1 | -- JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...]) |
四,修改json值函数
1.JSON_ARRAY_APPEND 指定位置追加数组元素
1 | -- JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...) |
2.JSON_ARRAY_INSERT 指定位置插入数组元素
1 | -- JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...) |
3.JSON_INSERT 指定位置插入
1 | -- JSON_INSERT(json_doc, path, val[, path, val] ...) |
4.JSON_REPLACE 指定位置替换
1 | -- JSON_REPLACE(json_doc, path, val[, path, val] ...) |
5.JSON_SET 指定位置设置
1 | -- JSON_SET(json_doc, path, val[, path, val] ...) |
6.JSON_MERGE 合并
1 | -- JSON_MERGE(json_doc, json_doc[, json_doc] ...) |
7.JSON_REMOVE 指定位置移除
1 | -- JSON_REMOVE(json_doc, path[, path] ...) |
8.JSON_UNQUOTE 去”号
1 | -- JSON_UNQUOTE(val) |
五,返回json值属性的函数
1.JSON_DEPTH 深度
1 | -- JSON_DEPTH(json_doc) |
2.JSON_LENGTH 长度
1 | -- JSON_LENGTH(json_doc[, path]) |
3.JSON_TYPE 类型
1 | -- JSON_TYPE(json_val) |
4.JSON_VALID 是否有效json格式
1 | -- JSON_VALID(val) |
附录:
1 | JSON_ARRAY 生成json数组 |
函数名 | 描述 |
---|---|
JSON_APPEND() (废弃的5.7.9) |
JSON文件追加数据 |
JSON_ARRAY() |
创建JSON数组 |
JSON_ARRAY_APPEND() |
JSON文件追加数据 |
JSON_ARRAY_INSERT() |
插入JSON数组 |
-> |
在评估路径返回JSON列值;相当于json_extract()。 |
JSON_CONTAINS() |
是否包含特定对象的JSON文档路径 |
JSON_CONTAINS_PATH() |
无论是JSON文件包含任何数据路径 |
JSON_DEPTH() |
JSON文档的最大深度 |
JSON_EXTRACT() |
从JSON文档返回数据 |
->> |
在评估路径和结束引语结果返回JSON列值;相当于json_unquote(json_extract())。 |
JSON_INSERT() |
将数据插入到JSON文档 |
JSON_KEYS() |
从JSON文件密钥数组 |
JSON_LENGTH() |
在JSON文档中的元素数 |
JSON_MERGE() (废弃的5.7.22) |
合并的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柱,空间时使用的文档插入到任何部分更新之前, |
JSON_TYPE() |
JSON值类型 |
JSON_UNQUOTE() |
JSON值而言 |
JSON_VALID() |
JSON值是否是有效的 |
mysql官方文档: https://dev.mysql.com/doc/refman/5.7/en/json-utility-functions.html
参考:
https://www.cnblogs.com/waterystone/p/5626098.html
https://www.cnblogs.com/ooo0/p/9309277.html
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 少言少语!
评论