Mysql中json類型數(shù)據(jù)查詢的實(shí)現(xiàn)
mysql在5.7版本之后就開始支持json數(shù)據(jù)類型,并且mysql8.0版本對(duì)json的處理已經(jīng)做的非常完善了。json數(shù)據(jù)類型的優(yōu)點(diǎn)缺點(diǎn)可自己查詢,本文主要介紹一些關(guān)于json數(shù)據(jù)類型的查詢操作。
下面用這個(gè)表來(lái)執(zhí)行查詢演示:
CREATE TABLE `users` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL COMMENT '姓名', `address` json NOT NULL COMMENT '住址', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入幾條數(shù)據(jù)
INSERT INTO `users` VALUES (1, '張三', '{\"city\": \"石家莊市\(zhòng)", \"tags\": [\"家\", \"公司\"], \"district\": \"橋西區(qū)\", \"province\": \"河北省\"}'); INSERT INTO `users` VALUES (2, '李四', '{\"city\": \"廣州市\(zhòng)", \"tags\": [\"宿舍\"], \"district\": \"珠海區(qū)\", \"province\": \"廣州省\"}'); INSERT INTO `users` VALUES (3, '王五', '{\"city\": \"長(zhǎng)春市\(zhòng)", \"district\": \"綠園區(qū)\", \"province\": \"吉林省\"}'); INSERT INTO `users` VALUES (4, '劉六', '{\"city\": \"昌平區(qū)\", \"province\": \"北京市\(zhòng)"}'); INSERT INTO `users` VALUES (5, '張三三', '[{\"city\": \"石家莊市\(zhòng)", \"tags\": [\"家\", \"公司\", \"學(xué)校\"], \"district\": \"橋西區(qū)\", \"province\": \"河北省\"}, {\"city\": \"鄭州市\(zhòng)", \"tags\": [\"宿舍\"], \"district\": \"橋東區(qū)\", \"province\": \"河南省\"}]'); INSERT INTO `users` VALUES (6, '李四四', '[{\"city\": \"廣州市\(zhòng)", \"tags\": [\"宿舍\"], \"district\": \"珠海區(qū)\", \"province\": \"廣州省\"}, {\"city\": \"廣州市\(zhòng)", \"district\": \"珠海區(qū)\", \"province\": \"廣州省\"}]'); INSERT INTO `users` VALUES (7, '王五六', '[\"家\", \"公司\", \"學(xué)校\"]');
查詢json對(duì)象指定屬性值的數(shù)據(jù)
1、函數(shù)查詢:json_extract(
json字段, '$.json屬性')
select * from users where json_extract(address, '$.province') = "河北省";
2、對(duì)象操作方法進(jìn)行查詢:json字段->'$.json屬性'
select * from users where address->'$.province' = "河北省";
查詢json數(shù)組指定下標(biāo)值的數(shù)據(jù)
1、數(shù)組操作方式查詢:字段->'$[0]'
select * from users where address->'$[0]'= "家";
根據(jù)JSON對(duì)象里面的屬性個(gè)數(shù)查詢
1、函數(shù)查詢:json_length(
json字段)
select * from users where json_length(address) = 2;
根據(jù)JSON數(shù)組里面的數(shù)組長(zhǎng)度查詢
1、函數(shù)查詢:json_length(
json字段)
select * from users where json_length(address) = 2;
根據(jù)JSON對(duì)象屬性值為數(shù)組的數(shù)組長(zhǎng)度查詢
1、函數(shù)查詢:json_length(
json字段, '$.json屬性')
#獲取addresss里面tags數(shù)組長(zhǎng)度為2的數(shù)據(jù) select * from users where json_length(address, '$.tags') = 2;
查詢JSON對(duì)象屬性值為數(shù)組的任意項(xiàng)存在指定值查詢
1、函數(shù)查詢:JSON_CONTAINS(json字段,JSON_OBJECT('json數(shù)組屬性', '內(nèi)容'))
select * from users where JSON_CONTAINS(address,JSON_OBJECT('tags', '家'));
查詢JSON數(shù)組里面對(duì)象屬性任意項(xiàng)存在指定屬性的數(shù)據(jù)
select * from users where address->'$[*].city' is not null;
查詢JSON對(duì)象存在指定屬性的數(shù)據(jù)
select * from users where address->'$.tags' is not null;
到此這篇關(guān)于Mysql中json類型數(shù)據(jù)查詢的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Mysql json類型數(shù)據(jù)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)中安裝MySQL的詳細(xì)圖文步驟
本文的主要內(nèi)容是在 Linux 上安裝 MySQL,以下內(nèi)容是源于 B站 - MySQL數(shù)據(jù)庫(kù)入門到精通 整理而來(lái),需要的朋友可以參考下2023-06-06實(shí)例解析MySQL中的存儲(chǔ)過(guò)程及存儲(chǔ)過(guò)程的調(diào)用方法
存儲(chǔ)例程是存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中的一組sql語(yǔ)句,通過(guò)在查詢中調(diào)用一個(gè)指定的名稱來(lái)執(zhí)行這些sql語(yǔ)句命令,下面就以實(shí)例解析MySQL中的存儲(chǔ)過(guò)程及存儲(chǔ)過(guò)程的調(diào)用方法:2016-05-05MySQL創(chuàng)建帶特殊字符的數(shù)據(jù)庫(kù)名稱方法示例
這篇文章主要給大家介紹了MySQL創(chuàng)建帶特殊字符的數(shù)據(jù)庫(kù)名稱方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-03-03Mysql CPU占用高的問(wèn)題解決方法小結(jié)
最近發(fā)現(xiàn)php網(wǎng)站發(fā)布信息比較慢,而且同網(wǎng)站目錄下的asp經(jīng)常登錄后立即就重新登錄,立即考慮到服務(wù)器資源占用問(wèn)題,所以進(jìn)服務(wù)器看到原來(lái)mysql占用率較高 25-60%左右,偶爾能跑到100%,所有導(dǎo)致上述問(wèn)題的發(fā)生2012-06-06安裝使用Percona XtraBackup來(lái)備份恢復(fù)MySQL的教程
這篇文章主要介紹了安裝使用Percona XtraBackup來(lái)備份恢復(fù)MySQL的教程,文中的示例環(huán)境基于CentOS系統(tǒng),需要的朋友可以參考下2015-12-12mysql數(shù)據(jù)校驗(yàn)過(guò)程中的字符集問(wèn)題處理
在日常應(yīng)用中,我們經(jīng)常會(huì)遇到在不同的字符集的數(shù)據(jù)庫(kù)直接進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出操作,針對(duì)這個(gè)問(wèn)題,我們來(lái)進(jìn)行討論下2014-05-05MySQL存儲(chǔ)結(jié)構(gòu)用法案例分析
這篇文章主要介紹了MySQL存儲(chǔ)結(jié)構(gòu)用法,結(jié)合具體案例形式分析了mysql存儲(chǔ)結(jié)構(gòu)相關(guān)使用方法與操作注意事項(xiàng),需要的朋友可以參考下2018-07-07MySql 8.0.11 安裝過(guò)程及 Navicat 鏈接時(shí)遇到的問(wèn)題小結(jié)
這篇文章主要介紹了MySql 8.0.11 安裝過(guò)程及 Navicat 鏈接時(shí)遇到的問(wèn)題,需要的朋友可以參考下2018-06-06