MySQL 5.7 新增加的 JSON 特性对应的 json 方法
2017-04-20 18:21
435 查看
MySQL 函数分为四类,分别是创建(Create JSON Values)、修改(Modify JSON Values)、查询(Search JSON Values)以及返回json相关属性(Return JSON Value Attributes)的方法。
创建JSON数组形式的数据
创建一个JSON对象
在JSON数组后增加新的数据
插入数据到JSON中,path为插入的路径
合并JSON数据
删除一部分JSON数据
替换一部分JSON数据
有存在的数据就替换,没有就插入
查找是否包含
查找path(一般就是key)是否存在
分解JSON 并查询,实际上就是在提供的path下查找值
以下两种方式等价
提出当前提供path下的key值
按着提供的值去查询,返回path数组
查询当前JSON深度
查询当前层级(path)下对象或者数组的元素数量
返回JSON值类型
验证是否是JSON
以上是基本的方法。
注:以上内容参考自官方文档:https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
创建类的方法
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'); 1 mysql> 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'); 1 mysql> 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]'); 20 mysql> 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)
验证是否是JSONmysql> SELECT JSON_VALID('{"a": 1}'); 1 SELECT JSON_VALID('hello'), JSON_VALID('"hello"'); 0,1
以上是基本的方法。
注:以上内容参考自官方文档:https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
相关文章推荐
- MySQL 5.7 新增加的 JSON 特性对应的 json 方法
- MySQL5.7新特性之JSON类型
- MySQL 5.7 JSON 新特性 用法总结
- mysql5.7新特性JSON数据类型解析
- [转帖 ]MySQL 5.7 新特性 JSON
- HTML5之新特性(选择器、class列表属性、JSON新方法、data自定义数据、延迟加载JS)
- MySQL5.7的新特性
- mysql中无法存储JSON 格式的数据的解决方法
- Mysql获取自动增加的id的最大值的方法
- MySQL 5.7 深度解析: JSON数据类型使用
- MySQL 5.7 新特性解读
- Windows下MySQL 5.7无法启动的解决方法
- mysql 5.7版本的二进制安装方法
- MySQL创建新用户、增加账户的2种方法及使用实例
- MySQL5.7新特性笔记
- win7 安装 MySQL 5.7 配置方法
- Mysql里查询字段为Json格式的数据模糊查询方法
- MySQL 5.7 新特性解读
- Centos6.8 下 部署Mysql组复制(MySQL Group Replication)之多主模式(5.7新特性)
- MySQL 5.7原生JSON格式支持