MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()

本文介绍如何使用 MySQL 的 FIND_IN_SET 函数来查询一个字段中是否包含特定的值。这种场景通常出现在多对多关系的数据存储中,通过逗号分隔的 ID 列表来实现。文中提供了具体的 SQL 查询示例以及 mybatis 中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()


一、业务描述

我有一个表结构,其中一个字段是多选的情况,所以使用多的一方表的ID用","逗号拼接起来存进这个字段,如下图所示:(每个字段里都是其他表的主键ID)
在这里插入图片描述

现在需要根据多的一方表中的某个ID去查询包含这个ID 的数据,如以上三个字段,都是一对多,包含其他表的ID,然后我根据 certification_id 和 patent_id 去查询


二、FIND_IN_SET(str,strList) 函数的语法

  • str 要查询的字符串
  • strList 字段名,参数以“,”分隔,如(1,2,6,8)
  • 查询字段(strList)中包含的结果,返回结果null或记录。

三、测试(在真实sql查询中匹配到则有数据返回,没匹配到则不返回)

- 3.1 匹配到则返回相应的下标(下标从1开始):

在这里插入图片描述

- 3.2 没匹配到则返回0:

在这里插入图片描述


四、实例

4.1 数据库中的数据

在这里插入图片描述


4.2 以certification_id 的 1和4 、patent_id 的 2 去查询,同时匹配到则返回数据

在这里插入图片描述


五、扩展

5.1 中文存入其中也可以进行,字符串都行
5.2 在 mybatis 的 xml 中使用示例(根据需求改动):

在这里插入图片描述


欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的情况下可以进行翻阅,更新的话会两边同时更新,大家不用担心!
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值