1. 程式人生 > 資料庫 >mysql查詢欄位型別為json時的兩種查詢方式

mysql查詢欄位型別為json時的兩種查詢方式

表結構如下:

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,USER) VALUES(4,'{"name": "danny","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時的兩種查詢方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!