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