你提到的 `JSON_UNQUOTE(JSON_EXTRACT())` 是 MySQL 中处理 JSON 数据的常用组合操作。以下是具体解释和示例:.md

你提到的 JSON_UNQUOTE(JSON_EXTRACT()) 是 MySQL 中处理 JSON 数据的常用组合操作。以下是具体解释和示例:


功能说明

  1. JSON_EXTRACT(json, path)

    • 从 JSON 列中提取指定路径(path)的值。
    • 返回结果会保留原始 JSON 类型(例如字符串会带双引号 ")。
  2. JSON_UNQUOTE(json)

    • 去除 JSON 字符串值的外层双引号 "
    • 如果输入不是字符串(如数字、布尔值等),则直接返回原始值。

组合使用

SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.path')) 
FROM your_table;

示例

假设表 usersprofile 列存储以下 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

注意事项

  1. 路径语法

    • 使用 $ 表示根对象。
    • 点符号或方括号访问嵌套字段:
      -- 提取 address.city
      SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.address.city'));
      
  2. 类型处理

    • 如果提取的是数字或布尔值(如 $.age),JSON_UNQUOTE 不会影响其类型:
      SELECT JSON_UNQUOTE(JSON_EXTRACT(profile, '$.age')); -- 返回 30(整数)
      
  3. 空值处理

    • 如果路径不存在或数据格式错误,返回 NULL

工具函数调用示例

假设你需要动态生成上述 SQL 查询,请调用以下工具函数:

<tools>
{
posted @ 2025-06-20 15:46  Dminter  阅读(78)  评论(0)    收藏  举报