新聞中心
Mysql數(shù)據(jù)庫中Json字符串的查詢技巧與實戰(zhàn)應用

隨著互聯(lián)網(wǎng)技術的快速發(fā)展,數(shù)據(jù)結構變得越來越多樣化,JSON(JavaScript Object Notation)作為一種輕量級的數(shù)據(jù)交換格式,因其簡潔、清晰的層次結構,逐漸在各種應用場景中得到了廣泛的應用,Mysql數(shù)據(jù)庫從5.7版本開始,引入了對JSON數(shù)據(jù)類型的支持,使得我們可以直接在數(shù)據(jù)庫層面處理JSON數(shù)據(jù),本文將詳細介紹如何在Mysql中查詢存儲的Json字符串中的數(shù)據(jù)。
Mysql中Json類型的支持
1、創(chuàng)建Json類型的表
我們需要創(chuàng)建一個支持Json類型的表,以下是一個簡單的示例:
CREATE TABLEjson_test(idint(11) NOT NULL AUTO_INCREMENT,json_datajson DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、插入Json數(shù)據(jù)
插入Json數(shù)據(jù)時,可以直接插入符合Json格式的字符串:
INSERT INTOjson_test(json_data) VALUES ('{"name": "張三", "age": 30, "email": "[email protected]"}');
查詢Json字符串中的數(shù)據(jù)
1、使用->和->>操作符
Mysql提供了兩種操作符來查詢Json字符串中的數(shù)據(jù):->和->>。
– ->操作符:用于獲取Json對象的某個字段,返回的是一個Json類型的值。
– ->>操作符:用于獲取Json對象的某個字段的值,返回的是一個非Json類型的值。
示例:
-- 使用->操作符 SELECT json_data->'$.name' AS name FROM json_test WHERE id = 1; -- 使用->>操作符 SELECT json_data->>'$.name' AS name FROM json_test WHERE id = 1;
2、使用JSON_EXTRACT函數(shù)
JSON_EXTRACT函數(shù)可以從Json字符串中提取指定路徑的值,其用法如下:
JSON_EXTRACT(json_doc, path)
示例:
SELECT JSON_EXTRACT(json_data, '$.name') AS name FROM json_test WHERE id = 1;
3、使用JSON_VALUE函數(shù)
JSON_VALUE函數(shù)可以從Json字符串中提取指定路徑的值,并返回一個非Json類型的值。
JSON_VALUE(json_doc, path [ON EMPTY | ON ERROR])
示例:
SELECT JSON_VALUE(json_data, '$.name') AS name FROM json_test WHERE id = 1;
4、使用JSON_CONTAINS函數(shù)
JSON_CONTAINS函數(shù)用于判斷Json字符串中是否包含某個指定的值。
JSON_CONTAINS(json_doc, val [path])
示例:
SELECT * FROM json_test WHERE JSON_CONTAINS(json_data, '"[email protected]"', '$.email');
5、使用JSON_SEARCH函數(shù)
JSON_SEARCH函數(shù)用于在Json字符串中搜索指定值,并返回匹配路徑。
JSON_SEARCH(json_doc, 'one', search_str[, escape_char[, path]])
示例:
SELECT JSON_SEARCH(json_data, 'one', '[email protected]', '$.email') FROM json_test WHERE id = 1;
實戰(zhàn)應用
假設我們有一個用戶表,其中包含一個Json類型的字段用于存儲用戶的興趣愛好,現(xiàn)在我們需要查詢喜歡籃球的用戶信息。
1、創(chuàng)建用戶表
CREATE TABLEuser(idint(11) NOT NULL AUTO_INCREMENT,namevarchar(50) DEFAULT NULL,ageint(11) DEFAULT NULL,hobbiesjson DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、插入用戶數(shù)據(jù)
INSERT INTOuser(name,age,hobbies) VALUES ('張三', 30, '{"sports": ["籃球", "足球"], "music": ["流行", "古典"]}'), ('李四', 28, '{"sports": ["乒乓球", "羽毛球"], "music": ["搖滾", "民謠"]}'), ('王五', 32, '{"sports": ["籃球"], "music": ["爵士"]}');
3、查詢喜歡籃球的用戶信息
SELECT * FROM user WHERE JSON_CONTAINS(hobbies, '"籃球"', '$.sports');
通過上述查詢,我們可以找到喜歡籃球的用戶信息。
本文介紹了Mysql中查詢存儲的Json字符串中的數(shù)據(jù)的方法,包括使用操作符、函數(shù)以及實戰(zhàn)應用,這些方法可以幫助我們更好地處理Json類型的數(shù)據(jù),提高數(shù)據(jù)庫查詢的靈活性和效率,在實際開發(fā)過程中,我們可以根據(jù)具體需求選擇合適的方法來實現(xiàn)對Json數(shù)據(jù)的查詢。
標題名稱:Mysql?直接查詢存儲的Json字符串中的數(shù)據(jù)
瀏覽地址:http://m.fisionsoft.com.cn/article/dpcseeh.html


咨詢
建站咨詢
