MySQL 设计 JSON_UNQUOTE() 函数的核心作用,去除两端的引号
MySQL 设计 JSON_UNQUOTE() 函数的核心作用是去除 JSON 字符串值的双引号,将其转换为普通的 SQL 文本字符串。 [1] (https://blog.51cto.com/xiongod/13537324)
设计背景与主要作用
- 解决 JSON_EXTRACT 带引号的问题
• 当你使用 JSON_EXTRACT() 从 JSON 字段中提取某个字符串类型的值时(例如 JSON_EXTRACT(data, '$.name')),MySQL 返回的结果默认会带有双引号(如 "张三")。
• 这在直接用于 SQL 比较、拼接到普通文本或作为常规 VARCHAR 字段展示时会产生多余的引号。JSON_UNQUOTE() 专门用来剥离这层双引号,还原为纯文本 张三。
• 你也可以使用简写操作符 ->>,它等价于 JSON_UNQUOTE(JSON_EXTRACT(...))。 [1] (https://www.cnblogs.com/gbase/articles/18429594), [2] (https://blog.csdn.net/codedadi/article/details/139401935), [3] (https://blog.51cto.com/xiongod/13537324) - 正确解析 JSON 中的转义字符
• 除了去除首尾双引号外,该函数还会将 JSON 字符串中的转义字符还原为实际字符。
• 例如:将 \n(转义的换行符)、\t(制表符)或 \" 转换为真正的换行、制表符和普通引号。 [1] (https://doris.apache.org/zh-CN/docs/4.x/sql-manual/sql-functions/scalar-functions/json-functions/json-unquote/) - 处理 NULL 值
• 如果传入的参数是 NULL,该函数会安全地返回 NULL,不会报错。 [1] (https://doris.apache.org/zh-CN/docs/4.x/sql-manual/sql-functions/scalar-functions/json-functions/json-unquote/)
简单示例对比
假设表中有字段 info 存储了 {"name": "张三"}:
• 使用 JSON_EXTRACT:sql
SELECT JSON_EXTRACT(info, '$.name') FROM users;
-- 输出结果(带有双引号):"张三"
请谨慎使用此类代码。
• 使用 JSON_UNQUOTE(或 ->> 操作符):sql
SELECT JSON_UNQUOTE(JSON_EXTRACT(info, '$.name')) FROM users;
-- 或者简写:
SELECT info->>'$.name' FROM users;
-- 输出结果(纯文本):张三
请谨慎使用此类代码。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1575.html
转载时须注明出处及本声明