请选择 进入手机版 | 继续访问电脑版

无忧编程_ASP.NET  / C# / PHP 程序员的软件世界

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1754|回复: 0

MySql5.7 json查询等操作语句

[复制链接]

415

主题

448

帖子

1861

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1861
发表于 2019-4-15 14:09:22 | 显示全部楼层 |阅读模式
MySql5.7 json查询等操作语句:
reate table t1(name json);
insert into t1 values(’ {
“hello”: “song”,
“num”: 111,
“obj”: { “who”: “me”, “arr”: [ 1, 2, “three” ], “more”:“hey” },
“bool”: true,
“can”: false,
“learning”: null,
“chiness”: “中文”
}' );
mysql> select json_depth(name) from t1;
返回json文本的深度 输出结果----4;
1 rows in set (0.02 sec)
mysql> select json_length(name) from t1;
返回json文本的长度 输出结果----9
1 rows in set (0.01 sec)
mysql> select json_type(name) 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(name) as a from t1;
查看存储的json有哪些key 返回结果:array[
'a'=> [“hello”, “link”, “can”, “num”, “bool”, “learning”, “notLink”, “obj”, “chiness”],
]
1 rows in set (0.05 sec)
mysql> select json_keys(name,’obj’) as a from t1;
查看obj有哪些key 返回结果:array['a' =>[“more”,“who”,“arr”]]
5rowsinset(0.00sec)
mysql>select jsonsearch(name,′one′,′me′) as a from t1;
查看第一次出现的位置 返回结果:array['“.obj.who”']
mysql> select json_search(name,’all’,’%aaaaa%’) as a from t1;
查看所有包含aaaaa的位置 返回结果:aaaaa所在的key json_search(name,’all’,’%json%’)
1rows in set (0.00 sec)
mysql> select json_extract(name,’link[0]’) as a from t1;
抽取值 返回结果:查找的key所对应的value 如:“http://jsonview.com
1 rows in set (0.00 sec)
mysql> select json_extract(name,’obj[0].more[0]’) from t1;
抽取值 返回结果同上
1 rows in set (0.00 sec)
或者使用下面的方式
mysql> select name,name->’key2’ from t1;
{“key1”: “value1”, “key2”: “value2”} | “value2” |
mysql> select JSON_ARRAY_APPEND(name,’name’,’xxx’) from t1;
追加记录 在指定的json字段追加key-value 参数(字段名,key,value)
mysql> select JSON_REMOVE(name,’name’) from t1;
删除json数据 参数(字段名,key)
mysql> select JSON_set(name,’name’,’ooo’) from t1;
有就替换,没有就insert
mysql> SELECT JSON_UNQUOTE(JSON_EXTRACT(name, ‘name’)) AS name from t1;
查询结果去掉双引号 返回字段name中的key为name的集合,没有“”
因为 JSON 不同于字符串,所以如果用字符串和 JSON 字段比较,是不会相等的可以通过
where key->'$.value'的形式去查询 ->和->>结果等效

windows .net(C#+MSSQL) linux(php+mysql)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|软件编程 ( 鄂ICP备11006601号 )鄂公网安备 42011102001337号 |

GMT+8, 2019-6-27 17:12 , Processed in 0.053224 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表