MySql中的json_extract函數處理json字段詳情
前言
在db中存儲json格式的數據,相信大傢都或多或少的使用過,那麼在查詢這個json結構中的數據時,有什麼好的方法麼?取出String之後再代碼中進行解析?
接下來本文將介紹一下Mysql5.7+之後提供的json_extract函數,可以通過key查詢value值
1. 使用方式
數據存儲的數據是json字符串,類型為我們常用的varchar即可
語法:
JSON_EXTRACT(json_doc, path[, path] …)
若json字符串非數組時,可以通過$.字段名
來表示查詢對應的value
2. 使用演示
創建一個測試的表:
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;
插入幾條數據:
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數組,怎麼整
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') | +----------------------------------+ | "一灰灰" | +----------------------------------+
除瞭在查詢結果中使用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. 小結
json_extract函數的使用方法,用於解析字段內value為json串的場景
到此這篇關於MySql中的json_extract函數處理json字段詳情的文章就介紹到這瞭,更多相關MySql 處理json 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL 8.0 可以操作 JSON 瞭
- MySQL中json_extract函數說明及使用方式
- 關於MySQL中的 like操作符詳情
- MySQL之select、distinct、limit的使用
- MySQL處理JSON常見函數的使用