MySQL 支持通過 JSONPath 表達式來查詢和操作 JSON 數據
$
:表示根元素。@
:表示當前元素。.
或 []
:用于訪問對象的屬性或數組的元素。..
:用于遞歸下降。*
:用于通配符,可以匹配所有的屬性或元素。[]
:用于數組索引或屬性選擇。[start:end:step]
:用于提取數組或字符串的一部分。?()
:用于應用過濾器表達式。查詢 JSON 數據:
使用 JSON_EXTRACT()
函數可以根據 JSONPath 表達式從 JSON 列中提取數據。例如:
SELECT JSON_EXTRACT(json_column, '$.property') FROM table_name;
更新 JSON 數據:
使用 JSON_SET()
函數可以根據 JSONPath 表達式更新 JSON 列中的數據。例如:
UPDATE table_name SET json_column = JSON_SET(json_column, '$.property', 'new_value');
刪除 JSON 數據:
使用 JSON_REMOVE()
函數可以根據 JSONPath 表達式刪除 JSON 列中的數據。例如:
UPDATE table_name SET json_column = JSON_REMOVE(json_column, '$.property');
插入 JSON 數據:
使用 JSON_INSERT()
函數可以根據 JSONPath 表達式在 JSON 列中插入數據。例如:
UPDATE table_name SET json_column = JSON_INSERT(json_column, '$.property', 'new_value');
合并 JSON 數據:
使用 JSON_MERGE_PATCH()
函數可以根據 JSONPath 表達式合并兩個 JSON 對象。例如:
UPDATE table_name SET json_column = JSON_MERGE_PATCH(json_column, '{"property": "new_value"}');
使用通配符:
使用 *
通配符可以匹配所有的屬性或元素。例如:
SELECT JSON_EXTRACT(json_column, '$.*.property') FROM table_name;
使用數組索引:
使用 []
可以訪問數組的特定元素。例如:
SELECT JSON_EXTRACT(json_column, '$[0].property') FROM table_name;
使用過濾器表達式:
使用 ?()
可以應用過濾器表達式。例如:
SELECT JSON_EXTRACT(json_column, '$.items[?(@.price < 10)].name') FROM table_name;
總之,熟練掌握 MySQL 中的 JSONPath 語法和使用技巧,可以幫助你更高效地處理 JSON 數據。