首页 > 数据库 >MYSQL 如何匹配查询JSON字段

MYSQL 如何匹配查询JSON字段

时间:2024-12-25 09:34:32浏览次数:3  
标签:user1 CONTAINS 字段 JSON user MYSQL data

在 MySQL 中,如果你存储的是 JSON 数据,并且需要检查某个 JSON 字段是否包含一个特定的键值对(例如 {user1: 1}),你可以使用 MySQL 提供的 JSON 函数来实现。

1. 使用 JSON_CONTAINS() 函数

JSON_CONTAINS() 函数可以检查一个 JSON 字段是否包含另一个 JSON 值。该函数返回一个布尔值,如果第一个参数(JSON 数据)包含第二个参数(查询条件),则返回 1,否则返回 0

示例查询:

假设你的表结构如下:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_data JSON
);

你可以通过 JSON_CONTAINS() 函数来检查 JSON 字段是否包含 {user1: 1}

SELECT * 
FROM users 
WHERE JSON_CONTAINS(user_data, '{"user1": 1}');

这条 SQL 语句会返回所有 user_data 字段包含 {user1: 1} 键值对的记录。

2. JSON_CONTAINS() 函数的使用细节

  • 第一个参数是你要查询的 JSON 字段。
  • 第二个参数是你要查找的 JSON 数据,必须是一个有效的 JSON 格式字符串。
  • 该函数会检查 JSON 字段中是否存在第二个参数所表示的键值对。

3. 查询部分匹配

如果你只想检查 JSON 字段中是否存在某个键(例如 user1)并且该键的值是 1,而不关心 JSON 字段中的其他内容,你仍然可以使用 JSON_CONTAINS(),但是需要确保第二个参数符合你想要的结构。

SELECT * 
FROM users 
WHERE JSON_CONTAINS(user_data, '{"user1": 1}');

4. 检查 JSON 字段中是否包含某个键

如果你不关心键值对,只想检查 JSON 字段中是否包含某个键(比如 user1),可以使用 JSON_EXTRACT()JSON_UNQUOTE()IS NOT NULL 来实现。

SELECT * 
FROM users 
WHERE JSON_UNQUOTE(JSON_EXTRACT(user_data, '$.user1')) = '1';
  • JSON_EXTRACT(user_data, '$.user1') 提取 user_data 字段中的 user1 键的值。
  • JSON_UNQUOTE() 去除引号,使其返回一个普通值。
  • 比较提取的值是否等于 '1'

5. 总结

  • JSON_CONTAINS():用于检查 JSON 字段是否包含某个指定的键值对。
  • JSON_EXTRACT() + JSON_UNQUOTE():可以用来提取并比较 JSON 字段中的值。

使用 JSON_CONTAINS() 是检查 JSON 数据是否包含某个完整键值对的简便方法。如果你需要更细粒度的查询(如只关心键是否存在且其值为特定值),可以结合 JSON_EXTRACT()JSON_UNQUOTE() 进行操作。

标签:user1,CONTAINS,字段,JSON,user,MYSQL,data
From: https://www.cnblogs.com/ltfxy/p/18629355

相关文章

  • MySQL NDB Cluster 日常运维命令总结
    一、数据备份物理备份:在管理节点使用ndb_mgm客户端工具启动备份:[root@管理节点mysql-cluster]#ndb_mgm--NDBCluster--ManagementClient--ndb_mgm>startbackup备份过程中,可通过ndb_mgm>showbackup;查看备份进度。备份完成后,数据文件会存储在各数......
  • 如何获得云服务器中 MySQL 数据库的密码?
    您需要获取云服务器中MySQL数据库的密码。获取数据库密码的方式取决于您使用的具体环境和服务。以下是几种常见的获取方法,帮助您快速找到数据库密码。1. 通过建站助手查看如果您使用的是带有建站助手的云服务器,通常可以在建站助手中直接查看MySQL数据库的密码。具体步骤如......
  • Linux 下 mysql 9.1 安装设置初始密码 【附脚本】
    @目录1.下载合适版本2.安装3.初始密码,并允许远程登录4.终极脚本5.其他常用sql概述:本文介绍Linux下如何安装mysql9.1并设置初始密码,不想看步骤内容,安装好后直接到脚本部分,复制脚本到mysql服务器设置即可。1.下载合适版本https://dev.mysql.com/downloads/mysql/例如我的......
  • Mysql的数据库引擎有哪些,有什么区别
    MySQL支持多种数据库引擎,不同的引擎在性能、功能和使用场景上有所不同。以下是MySQL常见的数据库引擎及其区别: ---###**1.InnoDB**-**特点**: -支持事务(ACID),是MySQL默认的存储引擎。 -支持外键约束。 -支持行级锁定(适合高并发)。 -使用聚簇索引,提升......
  • 如何找回MySQL数据库的密码?
    忘记MySQL数据库的密码是一个常见的问题,但幸运的是,有几种方法可以帮助您找回或重置密码。以下是详细的步骤指南,帮助您安全有效地恢复对数据库的访问权限:参考官方文档或教程:许多托管服务商会提供详细的指南,教用户如何自行重置MySQL密码。您可以查阅服务商提供的帮助文档或FAQ......
  • Mysql存储引擎(InnoDB-事务原理)
    1、什么是事务    事务是一组命令的集合,要么全部成功,要么都不成功。事务有四个特征,即原子性、一致性、隔离性、持久性。其中隔离性又有四大隔离级别,分别是读未提交,读已提交、可重复读、串行化,四大隔离级别主要解决三个现象,脏读,不可重复读,幻读。 2、事务的四大特性(A......
  • Webpack DLL(Dynamic Link Library)和 `manifest.json`
    webpack使用dll实现编译缓存,manifest.json作为缓存目录功能使用在Webpack中,DLL(DynamicLinkLibrary)和manifest.json是两个不同的概念,它们在构建过程中扮演着不同的角色:DLL(动态链接库):DLL是一个包含预编译代码的二进制文件。它包含了第三方库或应用程序代码的编译结果......
  • 医院食堂订餐系统Python+Vue3+Django(Pycharm毕业设计 mysql)
    文章目录具体实现截图项目介绍和开发技术介绍开发技术核心代码部分展示项目结构分析文章目录/写作提纲参考源码/演示视频获取方式具体实现截图项目介绍和开发技术介绍创新之处(1)系统资源闭环整合,实现了综合功能高度集成。(2)采用DJANGO框架,开发软件更加方便、快......
  • 返回json数据。
    1什么场景下需要返回json数据。ajax异步请求时,要求服务器返回json数据。借助jquery.$.get(url,data,function(result){},"json")之前服务器怎样返回json数据。需要借助阿里巴巴的fastjson的jar包。out=response.getWriter();StringjsonStr=JSON.toJSONString(java对象);......
  • 【Nginx应用】Windows下使用Nginx反向代理访问MySQL数据库
    环境说明1和2互通,2和3互通,1和3不通,想要在1上访问3上的msyql服务。实现步骤如下:一、安装nginx1.1下载nginx下载地址https://nginx.org/download/nginx-1.26.2.zip1.2将下载的安装包上传到192.168.221.134运维跳板机,并解压1.3nginx常用操作1.3.1启动nginx#进入......