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

相关推荐
o***36938 小时前
【玩转全栈】----Django基本配置和介绍
数据库·django·sqlite
2501_941111348 小时前
实战:用OpenCV和Python进行人脸识别
jvm·数据库·python
q***04059 小时前
MySQL 数据类型详解:TINYINT、INT 和 BIGINT
数据库·mysql
e***58239 小时前
MySQL如何执行.sql 文件:详细教学指南
数据库·mysql
z***3359 小时前
redis清理缓存
数据库·redis·缓存
CS_浮鱼9 小时前
【Linux】进程间通信
linux·运维·数据库
2501_941111519 小时前
Python多线程与多进程:如何选择?(GIL全局解释器锁详解)
jvm·数据库·python
2501_941111339 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
♡喜欢做梦9 小时前
MyBatis操作数据库(入门)
java·数据库·mybatis
敲上瘾9 小时前
MySQL事务全攻略:ACID特性、隔离级别与并发控制
linux·数据库·mysql·安全