可以使用JSON_EXTRACT函数获取指定字段的值。
MySQL中的JSON_UNQUOTE()函数用于去除JSON字符串值外层的引号,使其可以作为普通字符串使用。
函数语法和基本用法
JSON_UNQUOTE(json_val) 接受一个JSON字符串表达式作为参数,返回去除引号后的字符串值。如果输入不是有效的JSON字符串,函数将返回NULL。
假设有一个包含JSON数据的表my_table,其中json_column存储了如下数据:
bash
{"name":"Alice","age":30,"city":"Wonderland"}
要查询name字段的值并去除引号:
sql
SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.name')) AS name FROM my_table;
这将返回Alice而不是"Alice"。
与其他操作符的等价关系
MySQL提供了更简洁的写法,以下三种方式是等价的:
sql
JSON_UNQUOTE(JSON_EXTRACT(column, path))
JSON_UNQUOTE(column->path)
column->>path
注意事项
- 当处理数字或布尔值时,
JSON_UNQUOTE()仍然会正常工作,因为它不会尝试移除不存在的引号 - 该函数通常与
JSON_EXTRACT()或->操作符配合使用,以获取和清理JSON数据中的具体值 - 在MySQL 8.0中新增的内联路径操作符
->>已经内置了JSON_UNQUOTE()的功能
使用JSON_UNQUOTE()可以确保从JSON文档中提取的字符串值能够直接用于比较和其他字符串操作,而无需处理额外的引号字符