你提到的 `JSON_UNQUOTE(JSON_EXTRACT())` 是 MySQL 中处理 JSON 数据的常用组合操作。以下是具体解释和示例:.md
你提到的 JSON_UNQUOTE(JSON_EXTRACT()) 是 MySQL 中处理 JSON 数据的常用组合操作。以下是具体解释和示例:
功能说明
- 
JSON_EXTRACT(json, path)- 从 JSON 列中提取指定路径(path)的值。
- 返回结果会保留原始 JSON 类型(例如字符串会带双引号 ")。
 
- 
JSON_UNQUOTE(json)- 去除 JSON 字符串值的外层双引号 "。
- 如果输入不是字符串(如数字、布尔值等),则直接返回原始值。
 
- 去除 JSON 字符串值的外层双引号 
组合使用
SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.path')) 
FROM your_table;
示例
假设表 users 的 profile 列存储以下 JSON 数据:
{
  "name": "Alice",
  "age": 30,
  "address": {
    "city": "New York"
  }
}
需求:提取 name 的值并去除引号
SELECT 
  JSON_EXTRACT(profile, '$.name') AS raw_value,    -- 返回 "\"Alice\""
  JSON_UNQUOTE(JSON_EXTRACT(profile, '$.name')) AS clean_value  -- 返回 "Alice"
FROM users;
结果:
| raw_value | clean_value | 
|---|---|
| ""Alice"" | Alice | 
注意事项
- 
路径语法: - 使用 $表示根对象。
- 点符号或方括号访问嵌套字段:-- 提取 address.city SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.address.city'));
 
- 使用 
- 
类型处理: - 如果提取的是数字或布尔值(如 $.age),JSON_UNQUOTE不会影响其类型:SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.age')); -- 返回 30(整数)
 
- 如果提取的是数字或布尔值(如 
- 
空值处理: - 如果路径不存在或数据格式错误,返回 NULL。
 
- 如果路径不存在或数据格式错误,返回 
工具函数调用示例
假设你需要动态生成上述 SQL 查询,请调用以下工具函数:
<tools>
{ 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号