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

相关推荐
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
A黄俊辉A3 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
小白男神3 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客3 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统