Mysql?直接查詢(xún)存儲的Json字符串中的數據
在MySQL中,直接n字中可直接查詢(xún)存儲的查詢(xún)存儲JSON字ヽ(′ー`)ノ符串數據,利用MySQL的符串JSON函數提取和操作其中的信息。
Mysql數據庫中Json字符串的數據查詢(xún)技巧與實(shí)戰應用
隨著(zhù)互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,數據結構變得越來(lái)越多樣化,直接n字中JSON(JavaScript?? Object Notation)作為一種輕量級的查詢(xún)??存儲數據交換格式,因其簡(jiǎn)潔、符串清晰(′?_?`)的數(shu)據層次結構,逐漸在各種應用場(chǎng)景中得到了廣泛的直接n字中應用,Mysql數據庫從5.7版本開(kāi)始,查詢(xún)存儲引入了對JSON數據類(lèi)型的符串支持,使得我們可以直接在數據庫層面處( ?° ?? ?°)理JSON數據,數據本文將詳細介紹如何在Mysql中查詢(xún)存儲的直接n字中Json字符串中的數據。
Mysql中Json類(lèi)型的查詢(xún)存儲支持
我們需要創(chuàng )建一個(gè)支持Json類(lèi)┐(′?`)┌型的??表,以下是一個(gè)簡(jiǎn)單的示例:
CREATE TABLEjson_test(idint(11) NOT NULL AUTO_INCREMENT,json_datajson DEFAULT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入Json數據時(shí),可以直接插入符合Json格??式(shi)的字符串:
INSERT INTO?? json_test (json_data) VALUES ('{ "name&quo(′▽?zhuān)?)t;: "張三", "age": 30, "email": "zha┐(′д`)┌[email protected]"}');查詢(xún)Json字符串中的數據
1、使用->和->>操作符
Mysql提供了兩種操作符來(lái)查詢(xún)Json字符串中的數據:-&gヽ(′▽?zhuān)?ノt;和->>。
– ->操作符:用于獲取Json對象的某個(gè)字段,返回的是一個(gè)Json類(lèi)型的值。
示例:
-- 使用->操作符SELECT json_d(???)ata->'$.name' AS name FROM json_test WHERE id = 1;-- 使用??->>操作符SELE(′?`)CT json_data->>'$.name' AS name FROM js(′▽?zhuān)?on_test WHERE(′▽?zhuān)? id = 1;
JSON_EXTRACT函數可以從Json字符串中提取指定路徑的值,其用法如下:
JSON_EXTRACT(js(′?ω?`)on_doc, path)
示例:
SELECT JSON_EXTRACT(json_data, '$.name') AS name FROM json_test WHERE id = 1;
3、使用JSON_VALUE函數
JSON_VALUE函數可以從J??son字符串中提取指定路徑的值,并返回一個(gè)非Json類(lèi)型(′?`*)的值。
JSON_VALUE(json_doc, path [ON EMPTY | ON ERROR])
示例:
SELE??CT JSON??_VALUE(json_data, '$.name') AS name FROM json(???)_test?? WHERE id = 1;
4、使用JSON_CONTAINS函數
JSON_CONTAINS函數用于判斷Json字符串中是否包含某個(gè)指定的值。
JSON_CONTAINS(json_doc, val [path])示例:
SEヽ(′?`)ノLECT * FROM json_test WHERE JSON_CONTAINS(json_data, '"[email protected]"', '$.email');5、使用JSON_SEARCH函數
JSON_SEARCH函數用于在Json??字符串中搜索指定(ding)值,并返回匹配路徑。
JSON_SEARCH(json_doc, 'one', search_str[, escape_char[, path]])
示例:
SE??LECT JSON_SE??ARCH(json_data, 'one', 'zhangsan@exampl??e.(′▽?zhuān)?)com', '$.email') FROM(′?_?`) json_test WHERE id = 1;實(shí)戰應用
假設我們有一個(gè)用戶(hù)表,其中包含一個(gè)Json類(lèi)型的字段用于存儲用戶(hù)的興趣愛(ài)好,現在我們需要查詢(xún)喜歡籃球的用戶(hù)信息。
1、創(chuàng )建用戶(hù)表
CREATE TABLEuser(idint(11) NOT NU??LL AUTO_INCREMENT,namevarchar(50) DEFAU(′?`)LT NULL,ageint(11) DEFAULT NULL,hobbiesjson DEFA(′_ゝ`)ULT NULL, PRIMARY KEY (id)) ENGINE=InnoD┐(′?`)┌B DEFAULT CHARSET=utf8;
2、( ?▽?)插入用戶(hù)數據
INSERT IN(????)TO(◎_◎;)user(name,age,hobbies) VALUES ('張三', 30, '{ &qu??ot;sports": ["籃球", "(//ω//)足球"], "music": ["流行", "古典"]??}'), ('李四', 28ヽ(′▽?zhuān)?ノ, '{ "sports": ["??;乒乓球", "羽毛球"], &q(′_`)uot;music": ["搖滾", "民謠"]}'), ('王五', 32, '{ "sports": ["籃球"], "music": ["爵士"]}');
3、查詢(xún)喜歡籃球的用戶(hù)信息
SELECT * FROM user WHERE JSON_CONTA??INS(hobbies, '"籃球"', '$.sports');本文介紹了M(??-)?ysql中查詢(xún)存??儲的Json字符串中的(????)(de)數據的方法,包括使用操作符、函數以及實(shí)戰應用,這些方法可以幫助我們更好地處理Json類(lèi)型的數據,提高數據庫查詢(xún)的靈活性和效率,在實(shí)際開(kāi)發(fā)過(guò)程??中,我們可以根據具體需求選擇合適的方法來(lái)實(shí)現對Json數據的查詢(xún)。
