MySQL數(shù)據(jù)庫(kù)函數(shù)之JSON_EXTRACT示例代碼
前言
在 MySQL 中,JSON_EXTRACT() 函數(shù)用于從 JSON 文檔中提取一個(gè)或多個(gè)值。這個(gè)函數(shù)非常有用,特別是在處理存儲(chǔ)在 JSON 格式中的復(fù)雜數(shù)據(jù)時(shí)。下面是一些關(guān)于如何使用 JSON_EXTRACT() 的詳細(xì)說(shuō)明和示例。
基本語(yǔ)法
JSON_EXTRACT(json_doc, path [, path] ...)
json_doc: 要從中提取值的 JSON 文檔。path: 一個(gè)或多個(gè)路徑表達(dá)式,用于指定要提取的值的位置。路徑表達(dá)式以$開頭,表示 JSON 文檔的根。
路徑表達(dá)式
路徑表達(dá)式使用類似于 JavaScript 的對(duì)象和數(shù)組訪問(wèn)語(yǔ)法:
- 對(duì)象屬性:使用點(diǎn)
.訪問(wèn),例如$.name。 - 數(shù)組元素:使用方括號(hào)
[]訪問(wèn),例如$[0]。 - 嵌套結(jié)構(gòu):可以組合使用點(diǎn)和方括號(hào),例如
$.address.street或$.items[0].name。
示例
示例 1: 提取簡(jiǎn)單值
假設(shè)有一個(gè)表 users,其中有一個(gè)字段 data 存儲(chǔ)了用戶的 JSON 數(shù)據(jù):
CREATE TABLE users (
id INT PRIMARY KEY,
data JSON
);
INSERT INTO users (id, data) VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles"}');
我們可以使用 JSON_EXTRACT() 提取每個(gè)用戶的名字:
SELECT id, JSON_EXTRACT(data, '$.name') AS name FROM users;
輸出結(jié)果:
+----+--------+ | id | name | +----+--------+ | 1 | "Alice"| | 2 | "Bob" | +----+--------+
示例 2: 提取嵌套值
假設(shè) JSON 數(shù)據(jù)中包含嵌套的對(duì)象:
INSERT INTO users (id, data) VALUES
(3, '{"name": "Charlie", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}');
我們可以提取嵌套的街道地址:
SELECT id, JSON_EXTRACT(data, '$.address.street') AS street FROM users;
輸出結(jié)果:
+----+-----------------+ | id | street | +----+-----------------+ | 1 | NULL | | 2 | NULL | | 3 | "123 Main St" | +----+-----------------+
示例 3: 提取數(shù)組中的值
假設(shè) JSON 數(shù)據(jù)中包含一個(gè)數(shù)組:
INSERT INTO users (id, data) VALUES
(4, '{"name": "David", "age": 40, "hobbies": ["reading", "traveling", "cooking"]}');
我們可以提取數(shù)組中的第一個(gè)愛好:
SELECT id, JSON_EXTRACT(data, '$.hobbies[0]') AS hobby FROM users;
輸出結(jié)果:
+----+----------+ | id | hobby | +----+----------+ | 1 | NULL | | 2 | NULL | | 3 | NULL | | 4 | "reading"| +----+----------+
注意事項(xiàng)
JSON_EXTRACT()返回的結(jié)果是一個(gè) JSON 值,即使它是標(biāo)量值(如字符串或數(shù)字)。如果需要將結(jié)果轉(zhuǎn)換為標(biāo)量類型,可以使用CAST函數(shù)。例如:SELECT id, CAST(JSON_EXTRACT(data, '$.name') AS CHAR) AS name FROM users;
如果路徑表達(dá)式指向的值不存在,
JSON_EXTRACT()將返回NULL。路徑表達(dá)式中的索引是從 0 開始的。
總結(jié)
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)函數(shù)之JSON_EXTRACT的文章就介紹到這了,更多相關(guān)MySQL函數(shù)JSON_EXTRACT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門之常用命令小結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門之常用命令,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)管理、備份、日志常用操作命令與使用注意事項(xiàng),需要的朋友可以參考下2020-05-05
mysql8.0 JSON_CONTAINS的使用說(shuō)明
這篇文章主要介紹了mysql8.0 JSON_CONTAINS的使用說(shuō)明,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
pymysql.err.DataError:(1264, ")異常的有效解決方法(最新推薦)
遇到pymysql.err.DataError錯(cuò)誤時(shí),錯(cuò)誤代碼1264通常指的是MySQL數(shù)據(jù)庫(kù)中的Out of range value for column錯(cuò)誤,這意味著你嘗試插入或更新的數(shù)據(jù)超過(guò)了對(duì)應(yīng)數(shù)據(jù)庫(kù)列所允許的范圍,這篇文章主要介紹了pymysql.err.DataError:(1264, ")異常的有效問(wèn)題,需要的朋友可以參考下2024-05-05
MySQL 數(shù)據(jù)庫(kù)的監(jiān)控方式小結(jié)
本文主要介紹了MySQL 數(shù)據(jù)庫(kù)的監(jiān)控方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
mysql數(shù)據(jù)庫(kù)應(yīng)付大流量網(wǎng)站的的3種架構(gòu)擴(kuò)展方式介紹
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)應(yīng)付大流量網(wǎng)站的的3種架構(gòu)擴(kuò)展方式介紹,它們分別是讀寫分離、垂直分區(qū)、水平分區(qū),本文分別對(duì)它們做了講解,需要的朋友可以參考下2014-07-07
windows系統(tǒng)mysql壓縮包版本安裝過(guò)程
這篇文章主要介紹了windows系統(tǒng)mysql壓縮包版本安裝過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03

