mysql查找以逗号分隔字符串字段中,精确匹配包含条件的结果

  • 2021年10月29日
  • Mysql

表数据示例:
+----+----------+
| id | ids      |
+----+----------+
|  1 | 1,2,3,   |
|  2 | 2,10,14, |
+----+----------+

要求:查询ids列中包含1的结果
1)用like关键字(错误)
SELECT * FROM `my_test` WHERE ids LIKE '%1%';
+----+----------+
| id | ids      |
+----+----------+
|  1 | 1,2,3,   |
|  2 | 2,10,14, |
+----+----------+

2)用FIND_IN_SET函数(正确)
SELECT * FROM my_test WHERE FIND_IN_SET(1, ids);
+----+--------+
| id | ids    |
+----+--------+
|  1 | 1,2,3, |
+----+--------+

结论:用like会把所有包含1的数据查出来,包括12,13等;
但是用FIND_IN_SET不会,相当于在字段里面用逗号分隔后精确匹配,只会查询包含等于1的结果

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注