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

相关推荐
计算机学姐8 分钟前
基于php的摄影网站系统
开发语言·vue.js·后端·mysql·php·phpstorm
Elastic 中国社区官方博客20 分钟前
Elasticsearch:你是说,用于混合搜索(hybrid search)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
计算机学姐22 分钟前
基于php的旅游景点预约门票管理系统
开发语言·后端·mysql·php·phpstorm
czlczl2002092527 分钟前
高并发下的 Token 存储策略: Redis 与 MySQL 的一致性
数据库·redis·mysql
虹科网络安全33 分钟前
艾体宝产品 | 基准测试:ArangoDB性能碾压Neo4j,速度最高提升8倍!
数据库·neo4j
哈哈老师啊33 分钟前
Springboot校园订餐管理系统k2pr7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
JIngJaneIL34 分钟前
基于java+ vue学生选课系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
石明亮(JT)37 分钟前
MySQL8.0电商金融交易系统SQL实战
数据库·mysql
amao99881 小时前
数据库管理系统DBMS
数据库·oracle
wdfk_prog1 小时前
Ubuntu 虚拟机根文件系统损坏故障的深度分析与修复
linux·数据库·ubuntu