mysql查询字段类型为json时的两种查询方式
程序员文章站
2022-05-12 11:50:38
表结构如下:
id varchar(32)
info json
数据:
id = 1
info = {"age": "18","...
表结构如下:
id varchar(32) info json
数据:
id = 1 info = {"age": "18","disname":"小明"}
--------------------------------------------
现在我需要获取info中disanme的值,查询方法有:
1.
select t.id,json_extract(t.info,'$.disname') as disname from tablename t where 1=1
结果:
id = 1, disname=“小明”
以上sql查出的disname值是带有双引号的,有时我们不需要双引号,此时就需要用到下面这种方式。
2.
select t.id,t.info ->> '$.disname' as disname from tablename t where 1=1
结果:
id = 1 , disname=小明
ps:下面看下mysql查询json字段
建表语句
create table create table `test` ( `id` int(10) , `user` json default null comment '用户信息', primary key (`id`) ) engine=innodb auto_increment=6 default charset=utf8
插入数据
需要注意的是,json数据外面需要单引号来区别
insert into test (id,user) values(1,'{"name": "tom", "age": 18, "money": 3000}'); insert into test (id,user) values(2,'{"name": "jack", "age": 20, "money": 100}'); insert into test (id,user) values(3,'{"name": "tony", "age": 21, "money": 100}'); insert into test (id,user) values(4,'{"name": "danny", "age": 21, "money": 20}'); insert into test (id,user) values(5,'{"name": "janny", "age": 23, "money": 20}');
表数据如下
查询语句
select id,json_extract(user,'$.name')from test;
下面是查询结果
总结
以上所述是小编给大家介绍的mysql查询字段类型为json时的两种查询方式 ,希望对大家有所帮助