mysql json_extract用法_mysql中json_extract函数的使用?作用是什么?

需求描述:

今天看mysql中的json数据类型,涉及到一些使用,使用到了函数json_extract来

获取json字段中某个key的值,在此记录下.

操作过程:

1.查看包含json字段的表信息

mysql> desc tab_json;

+-------+------------+------+-----+---------+----------------+

| Field | Type       | Null | Key | Default | Extra          |

+-------+------------+------+-----+---------+----------------+

| id    | bigint(20) | NO   | PRI | NULL    | auto_increment |

| data  | json       | YES  |     | NULL    |                |

+-------+------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

mysql> show create table tab_json;

+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table    | Create Table                                                                                                                                                                |

+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| tab_json | CREATE TABLE `tab_json` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`data` json DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |

+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> select * from tab_json;

+----+----------------------------------------------------------------+

| id | data                                                           |

+----+----------------------------------------------------------------+

|  1 | {"Tel": "132223232444", "name": "david", "address": "Beijing"} |

|  2 | {"Tel": "13390989765", "name": "Mike", "address": "Guangzhou"} |

+----+----------------------------------------------------------------+

2 rows in set (0.00 sec)

备注:data字段就是json的数据类型,由键值对组成.

2.json_extract函数的使用

mysql> select json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.tel");

+--------------------------------------------------------------+

| json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.tel") |

+--------------------------------------------------------------+

| "13240133388" |

+--------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> select json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.name");

+---------------------------------------------------------------+

| json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.name") |

+---------------------------------------------------------------+

| "Zhaim" |

+---------------------------------------------------------------+

1 row in set (0.00 sec)

备注:这个查询时直接对json对象进行操作.

3.对tab_json表使用json_extract函数

mysql> select json_extract(data,'$.name') from tab_json;

+-----------------------------+

| json_extract(data,'$.name') |

+-----------------------------+

| "david" |

| "Mike" |

+-----------------------------+

2 rows in set (0.00 sec)

mysql> select json_extract(data,'$.name'),json_extract(data,'$.tel') from tab_json; #如果查询没有的key,那么是可以查询,不过返回的是NULL.

+-----------------------------+----------------------------+

| json_extract(data,'$.name') | json_extract(data,'$.tel') |

+-----------------------------+----------------------------+

| "david" | NULL |

| "Mike" | NULL |

+-----------------------------+----------------------------+

2 rows in set (0.00 sec)

mysql> select json_extract(data,'$.name'),json_extract(data,'$.address') from tab_json;

+-----------------------------+--------------------------------+

| json_extract(data,'$.name') | json_extract(data,'$.address') |

+-----------------------------+--------------------------------+

| "david" | "Beijing" |

| "Mike" | "Guangzhou" |

+-----------------------------+--------------------------------+

2 rows in set (0.00 sec)

备注:通过json_extract函数,获取到了json对象的特定key的值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值