MySQL 5.7 新增加的 JSON 特性对应的 json 方法
来源:互联网 发布:sql数据库远程连接 编辑:程序博客网 时间:2024/05/26 02:53
MySQL 函数分为四类
- 创建(Create JSON Values)
- 修改(Modify JSON Values)
- 查询(Search JSON Values)
- 返回json相关属性(Return JSON Value Attributes)的方法。
创建类的方法
JSON_ARRAY([val[, val] …])
创建JSON数组形式的数据
SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());[1, "abc", null, true, "11:30:24.000000"]
JSON_OBJECT([key, val[, key, val] …])
创建一个JSON对象
SELECT JSON_OBJECT('id', 87, 'name', 'carrot'); {"id": 87, "name": "carrot"}
修改类的方法
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] …)
在JSON数组后增加新的数据
mysql> SET @j = '["a", ["b", "c"], "d"]';mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);["a", ["b", "c", 1], "d"]
JSON_ARRAY_INSERT(json_doc, path, val[, path, val] …)
插入数据到JSON中,path为插入的路径
mysql> SET @j = '["a", {"b": [1, 2]}, [3, 4]]';mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x');["a", "x", {"b": [1, 2]}, [3, 4]]
JSON_MERGE(json_doc, json_doc[, json_doc] …)
合并JSON数据
SELECT JSON_MERGE('[1, 2]', '[true, false]');[1, 2, true, false]
JSON_REMOVE(json_doc, path[, path] …)
删除一部分JSON数据
mysql> SET @j = '["a", ["b", "c"], "d"]';mysql> SELECT JSON_REMOVE(@j, '$[1]');["a", "d"]
JSON_REPLACE(json_doc, path, val[, path, val] …)
替换一部分JSON数据
mysql> SET @j = '{ "a": 1, "b": [2, 3]}';mysql> SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]');{"a": 10, "b": [2, 3]}
JSON_SET(json_doc, path, val[, path, val] …)
有存在的数据就替换,没有就插入
mysql> SET @j = '{ "a": 1, "b": [2, 3]}';mysql> SELECT JSON_SET(@j, '$.a', 10, '$.c', '[true, false]');{"a": 10, "b": [2, 3], "c": "[true, false]"}
查询类方法
JSON_CONTAINS(json_doc, val[, path])
查找是否包含
mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';mysql> SET @j2 = '1';mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a');1mysql> SELECT JSON_CONTAINS(@j, @j2, '$.b');0
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] …)
查找path(一般就是key)是否存在
mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e');1mysql> SELECT JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e');0
JSON_EXTRACT(json_doc, path[, path] …)
分解JSON 并查询,实际上就是在提供的path下查找值
mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]'); 20mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]');[20, 10]
JSON_EXTRACT 的替代语法 column->path
以下两种方式等价
mysql> SELECT c, JSON_EXTRACT(c, "$.id"), g > FROM jemp > WHERE JSON_EXTRACT(c, "$.id") > 1 > ORDER BY JSON_EXTRACT(c, "$.name");
mysql> SELECT c, c->"$.id", g > FROM jemp > WHERE c->"$.id" > 1 > ORDER BY c->"$.name";
JSON_KEYS(json_doc[, path])
提出当前提供path下的key值
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}');["a", "b"]
JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] …])
按着提供的值去查询,返回path数组
mysql> SET @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';mysql> SELECT JSON_SEARCH(@j, 'one', 'abc'); "$[0]" mysql> SELECT JSON_SEARCH(@j, 'all', 'abc'); ["$[0]", "$[2].x"]
查询JSON自有属性的方法
JSON_DEPTH(json_doc)
查询当前JSON深度
SELECT JSON_DEPTH('[10, {"a": 20}]');3
JSON_LENGTH(json_doc[, path])
查询当前层级(path)下对象或者数组的元素数量
mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}');2
JSON_TYPE(json_val)
返回JSON值类型
mysql> SET @j = '{"a": [10, true]}';mysql> SELECT JSON_TYPE(@j); OBJECT SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a'));ARRAY
JSON_VALID(val)
验证是否是JSON
mysql> SELECT JSON_VALID('{"a": 1}');1SELECT JSON_VALID('hello'), JSON_VALID('"hello"');0,1
以上内容参考自官方文档:https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
转载原文地址:http://www.zuimoban.com/jiaocheng/mysql/6768.html
- MySQL 5.7 新增加的 JSON 特性对应的 json 方法
- MySQL 5.7 新增加的 JSON 特性对应的 json 方法
- MySQL 5.7 新特性 JSON 的创建,插入,查询,更新
- JSON的一个整合两个JSON对应值加合一起
- PHP7.0新增加的特性
- json数据的对应关系
- JSON转XML及反射调用对应的方法
- Unity 中生成JSON以及对应的解析方法
- json 数据写入mysql 数据库的方法
- json及java对象的对应关系(json分析)。
- json数据转化为对应的对象
- json递归查找key对应的值
- json转换为对应的java类
- 使用JSON的方法
- 生成JSON的方法
- 使用JSON的方法
- 使用JSON的方法
- 使用JSON的方法
- 设计模式笔记
- 通过原型实现javascript Array的去重、最大值和最小值
- sqlite学习及封装
- Ext中grid删除操作
- java自定义异常
- MySQL 5.7 新增加的 JSON 特性对应的 json 方法
- 【转】activiti用户任务
- Ext中grid删除操作
- 利用bouncycastle组装X509证书
- 分布式服务框架 dubbo/dubbox 入门示例
- Java设计模式之简单工厂模式
- 【转】activiti用户任务
- spring容器启动
- Java直接发送邮件或写好的eml邮件