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

相关推荐
星马梦缘几秒前
数据库第4章 : 中级 SQL
数据库·sql
ZPC82105 分钟前
手眼标定原理
数据库·数码相机·postgresql
S1998_1997111609•X7 分钟前
iOS栈被恶意篡改变成开发者模式漏洞裸露内核系统核心功能栈被泄露于政府黑客集团泄漏安全系统置门的犯罪行为原理
数据库·网络协议·百度·ssh·开闭原则
摇滚侠9 分钟前
Docker 部署 MySQL ElasticSearch Kibana RabbitMQ
mysql·elasticsearch·docker
一掬净土10 分钟前
安装MySQL8:Fatal glibc error: CPU does not support x86-64-v2
mysql·x86-64-v2·cpu不支持·glibc error·not support
xxjj998a21 分钟前
Laravel5.x全版本特性解析
数据库·mysql·adb
lifewange25 分钟前
CNode API v1 完整接口文档(JSON 规范整理)
java·前端·json
小碗羊肉25 分钟前
【MySQL | 第九篇】SQL优化
数据库·sql·mysql
xxjj998a1 小时前
Laravel6.x核心特性全解析
数据库·mysql·adb
m0_748554819 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python