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 数据。