mysql根據(jù)json字段內(nèi)容作為查詢條件(包括json數(shù)組)檢索數(shù)據(jù)
最近用到了mysql5.7的json字段的檢索查詢,發(fā)現(xiàn)挺好用的,記錄一下筆記
我們有一個日志表,里面的data字段是保存不同對象的json數(shù)據(jù),遇到想根據(jù)里面的json的字段內(nèi)容作為條件查詢的情況
mysql根據(jù)json字段的內(nèi)容檢索查詢數(shù)據(jù)
- 使用 字段->'$.json屬性'進(jìn)行查詢條件
- 使用json_extract函數(shù)查詢,json_extract(字段,"$.json屬性")
- 根據(jù)json數(shù)組查詢,用JSON_CONTAINS(字段,JSON_OBJECT('json屬性', "內(nèi)容"))

mysql5.7以上支持json的操作,以及增加了json存儲類型
一般數(shù)據(jù)庫存儲json類型的數(shù)據(jù)會用json類型或者text類型
注意:用json類型的話
1)JSON列存儲的必須是JSON格式數(shù)據(jù),否則會報錯。
2)JSON數(shù)據(jù)類型是沒有默認(rèn)值的。
查詢根據(jù)表字段的json內(nèi)容進(jìn)行查詢
首先創(chuàng)建表
create table log(
id int not null,
content varchar(255),
createTime TIMESTAMP,
data text
)
插入幾個測試數(shù)據(jù)

執(zhí)行查詢sql
使用 字段->’$.json屬性’進(jìn)行查詢條件
select * from log where data->'$.id' = 142;
或
select data->'$.id' id,data->'$.name' name from log where data->'$.id' = 142;

測試根據(jù)json數(shù)組的字段查詢
1.再建一個表log2,插入幾條json數(shù)組數(shù)據(jù)
[{
"id": "141",
"name": "xxx",
"type": "input"
},
{
"id": "142",
"name": "xin",
"type": "textarea"
}
]

查詢json數(shù)組里面對象的id等于142的記錄
用JSON_CONTAINS(字段,JSON_OBJECT(‘json屬性’, “內(nèi)容”))
select * from log2 where JSON_CONTAINS(data,JSON_OBJECT('id', "142"))
參考:
Simon格子的MySQL 5.7新增對JSON支持
到此這篇關(guān)于mysql根據(jù)json字段內(nèi)容作為查詢條件(包括json數(shù)組)檢索數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mysql json查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql跨服務(wù)查詢之FEDERATED存儲引擎的實現(xiàn)
本文主要介紹了mysql跨服務(wù)查詢之FEDERATED存儲引擎的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
MySQL 數(shù)據(jù)庫 binLog 日志的使用操作
binlog是MySQL數(shù)據(jù)庫中的一種日志類型,它記錄了數(shù)據(jù)庫中的所有更改操作,例如插入、更新、刪除操作,本文給大家介紹MySQL 數(shù)據(jù)庫 binLog 日志的使用,感興趣的朋友一起看看吧2023-08-08
解析MYSQL 數(shù)據(jù)庫導(dǎo)入SQL 文件出現(xiàn)亂碼的問題
本篇文章是對MYSQL數(shù)據(jù)庫導(dǎo)入SQL文件出現(xiàn)亂碼的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
CentOS 8 安裝 MySql并設(shè)置允許遠(yuǎn)程連接的方法
這篇文章主要介紹了CentOS 8 安裝 MySql并設(shè)置允許遠(yuǎn)程連接的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

