如何在MySQL中搜索JSON数据,并去除引号

可以使用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文档中提取的字符串值能够直接用于比较和其他字符串操作,而无需处理额外的引号字符

相关推荐
jiayou646 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE1 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
Venuslite2 天前
从 Unexpected token < 到 Extra data:一次讲清 JSON 解析错误的排查思路
json
唐青枫2 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8782 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库