2014-02-17 155 views
0

比较逗号分隔的字符串在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,但不能让它根据您的问题,我的情况

+1

你不应该在一个列中存储逗号分隔值。这个查询现在是个问题的事实是数据库设计错误的直接结果 –

+0

@Ozone是catid的数据类型吗? –

+0

@ChintanGor varchar 255.其中值存储为1,2,3 – Ozone

回答

0

工作,你可以用这样的运营商,而不是在

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]' 

OR

SELECT * 
    FROM testchintan 
WHERE 
REPLACE(catid,',','|') REGEXP '[9,7]' 
+0

感谢您响应其不工作。 – Ozone

+0

@Ozone这是catid的数据类型 –

+0

varchar 255.其中值存储为1,2,3 – Ozone

0

请注意,我不是认真提倡这个解决方案...

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