MySql5.7 json查询

create table t1(jdoc json); 
insert into t1 values(’ {
 “hey”: “guy”,
 “anumber”: 243,
 “anobject”: { “whoa”: “nuts”, “anarray”: [ 1, 2, “three” ], “more”:“stuff” },
 “awesome”: true,
 “bogus”: false,
 “meaning”: null,
 “japanese”: “明日がある。”, 
 “link”:“http://jsonview.com“, “notLink”: “http://jsonview.com is great”
 }' ); 
mysql> select json_depth(jdoc) from t1; 
返回json文本的深度  输出结果----4; 
1 rows in set (0.02 sec) 
mysql> select json_length(jdoc) from t1; 
返回json文本的长度  输出结果----9
1 rows in set (0.01 sec) 
mysql> select json_type(jdoc) from t1; 
返回json值得类型   输出结果----OBJECT 
1 rows in set (0.04 sec) 
mysql> SELECT JSON_VALID(‘hello’) a, JSON_VALID(‘“hello”’) b; 
判读是否是合法的json类型   返回结果:a:0  b:1
1 row in set (0.00 sec) 
mysql> select json_keys(jdoc) as a from t1; 
查看存储的json有哪些key  返回结果:array[
'a'=> [“hey”, “link”, “bogus”, “anumber”, “awesome”, “meaning”, “notLink”, “anobject”, “japanese”],
]
1 rows in set (0.05 sec) 
mysql> select json_keys(jdoc,’anobject’) as a  from t1; 
查看anobject有哪些key   返回结果:array['a' =>[“more”,“whoa”,“anarray”]]
5rowsinset(0.00sec)
mysql>select jsonsearch(jdoc,′one′,′nuts′) as a from t1;
查看第一次出现的位置  返回结果:array['“.anobject.whoa”']
mysql> select json_search(jdoc,’all’,’%aaaaa%’) as a from t1; 
查看所有包含aaaaa的位置    返回结果:aaaaa所在的key   json_search(jdoc,’all’,’%json%’) 
1rows in set (0.00 sec) 
mysql> select json_extract(jdoc,’link[0]’) as a from t1; 
抽取值   返回结果:查找的key所对应的value 如:“http://jsonview.com
1 rows in set (0.00 sec) 
mysql> select json_extract(jdoc,’anobject[0].more[0]’) from t1; 
抽取值  返回结果同上
1 rows in set (0.00 sec) 
或者使用下面的方式 
mysql> select jdoc,jdoc->’key2’ from t1; 
{“key1”: “value1”, “key2”: “value2”} | “value2” | 
 
mysql> select JSON_ARRAY_APPEND(jdoc,’name’,’xxx’) from t1; 
追加记录  在指定的json字段追加key-value 参数(字段名,key,value)
mysql> select JSON_REMOVE(jdoc,’name’) from t1; 
删除json数据 参数(字段名,key)
mysql> select JSON_set(jdoc,’name’,’ooo’) from t1; 
有就替换,没有就insert 
 
mysql> SELECT JSON_UNQUOTE(JSON_EXTRACT(jdoc, ‘name’)) AS name from t1; 
查询结果去掉双引号  返回字段jdoc中的key为name的集合,没有“”
因为 JSON 不同于字符串,所以如果用字符串和 JSON 字段比较,是不会相等的可以通过
where key->'$.value'的形式去查询   ->和->>结果等效

猜你喜欢

转载自www.cnblogs.com/pfdltutu/p/9019444.html
今日推荐