比较MySQL列中逗号分隔的字符串,其中列也是逗号分隔的

比较MySQL列中逗号分隔的字符串,其中列也是逗号分隔的,mysql,mysqli,phpmyadmin,Mysql,Mysqli,Phpmyadmin,比较MySQL列中逗号分隔的字符串,其中列也是逗号分隔的 例如: Id name catid 1 abc 4,5,2 2 bcd 5 3 efg 9,1,7 SELECT * FROM TABLE WHERE catid IN (2,5,6) 这里2,5,6我必须与catid值进行比较才能得到结果。 如果需要任何帮助来获得正确的输出,我使用FIND_IN_SET,但无法使其在我的案例中工作根据您的问题,您可以使用LIKE操作符而不是IN SELECT * FROM test

比较MySQL列中逗号分隔的字符串,其中列也是逗号分隔的

例如:

Id name catid
1  abc   4,5,2
2  bcd   5
3  efg   9,1,7

SELECT * FROM TABLE WHERE catid IN (2,5,6)
这里2,5,6我必须与catid值进行比较才能得到结果。
如果需要任何帮助来获得正确的输出,我使用FIND_IN_SET,但无法使其在我的案例中工作

根据您的问题,您可以使用LIKE操作符而不是IN

SELECT * FROM testchintan  WHERE CONCAT(',',catid,',') LIKE '%,5,%'
OR CONCAT(',',catid,',') LIKE '%,2,%' OR CONCAT(',',catid,',') LIKE '%,6,%'
或者您可以使用REGEXP

SELECT *
  FROM testchintan
 WHERE catid REGEXP '[4,9,5]'


请注意,我并不是认真地提倡将此作为解决方案

SELECT * FROM my_table WHERE FIND_IN_SET(5,catid) OR FIND_IN_SET(2,catid);

您不应该在单个列中存储逗号分隔的值。这个查询现在是一个问题,这是错误数据库的直接结果design@Ozone哪个是catid的数据类型?@ChintanGor varchar 255。其中值存储为1,2,3@Ozone这是CATIVARCHAR 255的数据类型。其中值存储为1,2,3@Ozone我改变答案试试这个我知道这个解决方案但我需要直接查询来解决这类问题,由于数据库的设计,我们需要创建另一个表,但如果我们能找到解决此类问题的方法,这将非常简单。@请尝试使用我使用REGEXP添加的新查询,但不建议使用长数据库,这将使您的数据库速度减慢一点
SELECT * FROM my_table WHERE FIND_IN_SET(5,catid) OR FIND_IN_SET(2,catid);