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


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开始):

MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()_第1张图片

- 3.2 没匹配到则返回0:

MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()_第2张图片


四、实例

4.1 数据库中的数据

MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()_第3张图片


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

MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()_第4张图片


五、扩展

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

MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()_第5张图片


你可能感兴趣的:(MySQL)