`json_extract()` 是 MySQL 中用于從 JSON 列中提取值的函數(shù)。該函數(shù)允許您查詢(xún)存儲(chǔ)在 JSON 數(shù)據(jù)列中的特定值。這在處理包含 JSON 格式數(shù)據(jù)的數(shù)據(jù)庫(kù)時(shí)非常有用,尤其是在處理動(dòng)態(tài)內(nèi)容和應(yīng)用程序數(shù)據(jù)交互時(shí)。
函數(shù)的基本語(yǔ)法是:
```sql
json_extract(json_doc, path[, path] ...)
```
其中:
`json_doc` 是包含 JSON 數(shù)據(jù)的列或變量。
`path` 是要提取的數(shù)據(jù)的路徑。它可以是字符串形式,指定一個(gè)或多個(gè)鍵值對(duì)的路徑,通過(guò) `->` 操作符連接。如果 JSON 數(shù)據(jù)有多個(gè)層次結(jié)構(gòu),可以多次使用 `->` 操作符來(lái)遍歷每個(gè)層級(jí)。
示例:
假設(shè)您有一個(gè)包含 JSON 數(shù)據(jù)的表 `users`,并且有一個(gè)名為 `data` 的列,該列存儲(chǔ)用戶(hù)信息作為 JSON 對(duì)象。例如:
```json
{
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"street": "Main St"
}
}
```
如果您想從該 JSON 數(shù)據(jù)中提取 `city` 的值,可以使用以下查詢(xún):
```sql
SELECT json_extract(data, '$.address.city') AS city FROM users WHERE ...;
```
這將返回地址中的城市值("New York")。您可以根據(jù)需要更改路徑來(lái)提取不同的值。如果路徑不存在或 JSON 數(shù)據(jù)格式不正確,函數(shù)將返回 NULL。這對(duì)于過(guò)濾和查詢(xún) JSON 數(shù)據(jù)特別有用,特別是當(dāng)您需要基于存儲(chǔ)在 JSON 列中的特定值來(lái)檢索數(shù)據(jù)時(shí)。