MySql中的json_extract函數(shù)處理json字段詳情
前言
在db中存儲(chǔ)json格式的數(shù)據(jù),相信大家都或多或少的使用過,那么在查詢這個(gè)json結(jié)構(gòu)中的數(shù)據(jù)時(shí),有什么好的方法么?取出String之后再代碼中進(jìn)行解析?
接下來本文將介紹一下Mysql5.7+之后提供的json_extract函數(shù),可以通過key查詢value值
1. 使用方式
數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)是json字符串,類型為我們常用的varchar即可
語法:
JSON_EXTRACT(json_doc, path[, path] …)
若json字符串非數(shù)組時(shí),可以通過$.字段名
來表示查詢對(duì)應(yīng)的value
2. 使用演示
創(chuàng)建一個(gè)測試的表:
CREATE TABLE `json_table` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `val` json DEFAULT NULL COMMENT 'json字符串', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
插入幾條數(shù)據(jù):
insert into `json_table` values (1, '{"name": "一灰灰blog", "age": 18}'); insert into `json_table` values (2, '{"name": "一灰灰blog", "site": "https://blog.hhui.top"}');
查詢json串中的name
,如下:
mysql> select json_extract(`val`, '$.name') from `json_table`; +-------------------------------+ | json_extract(`val`, '$.name') | +-------------------------------+ | "一灰灰blog" | | "一灰灰blog" | +-------------------------------+
如果查詢的key不在json串中,返回的是null,而不是拋異常
mysql> select json_extract(`val`, '$.name') as `name`, json_extract(`val`, '$.site') as `site` from `json_table`; +-----------------+-------------------------+ | name | site | +-----------------+-------------------------+ | "一灰灰blog" | NULL | | "一灰灰blog" | "https://blog.hhui.top" | +-----------------+-------------------------+
接下來再看一下如果為json數(shù)組,怎么整
mysql> insert into `json_table` values (3, '[{"name": "一灰灰", "site": "https://spring.hhui.top"}]'); mysql> select json_extract(`val`, '$[0].name') from `json_table` where id = 3; +----------------------------------+ | json_extract(`val`, '$[0].name') | +----------------------------------+ | "一灰灰" | +----------------------------------+
除了在查詢結(jié)果中使用json_extract之外,也可以在查詢條件中使用它
mysql> select * from `json_table` where json_extract(`val`, '$.name') = '一灰灰blog'; +----+------------------------------------------------------------+ | id | val | +----+------------------------------------------------------------+ | 1 | {"age": 18, "name": "一灰灰blog"} | | 2 | {"name": "一灰灰blog", "site": "https://blog.hhui.top"} | +----+------------------------------------------------------------+
3. 小結(jié)
json_extract函數(shù)的使用方法,用于解析字段內(nèi)value為json串的場景
到此這篇關(guān)于MySql中的json_extract函數(shù)處理json字段詳情的文章就介紹到這了,更多相關(guān)MySql 處理json 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)
mysql分區(qū)表使用方法,新增分區(qū)、刪除分區(qū)、分區(qū)的合并、分區(qū)的拆分等使用方法2013-12-12關(guān)于com.mysql.jdbc.Driver與com.mysql.cj.jdbc.Driver的區(qū)別
這篇文章主要介紹了關(guān)于com.mysql.jdbc.Driver與com.mysql.cj.jdbc.Driver的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySQL實(shí)現(xiàn)快速刪除所有表而不刪除數(shù)據(jù)庫的方法
這篇文章主要介紹了MySQL實(shí)現(xiàn)快速刪除所有表而不刪除數(shù)據(jù)庫的方法,涉及mysql批量執(zhí)行語句的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09MySQL 5.7.9 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534”的解決方法
這篇文章主要介紹了MySQL 5.7.9 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534”的解決方法,需要的朋友可以參考下2016-12-12Mybatis動(dòng)態(tài)傳入order?by問題
這篇文章主要介紹了Mybatis動(dòng)態(tài)傳入order?by問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12linux環(huán)境下安裝mysql數(shù)據(jù)庫的詳細(xì)教程
這篇文章主要介紹了linux環(huán)境下安裝mysql數(shù)據(jù)庫的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06