比较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,但无法使其适用于我的情况
答案 0 :(得分:0)
根据您的问题,您可以使用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]'
OR
SELECT *
FROM testchintan
WHERE
REPLACE(catid,',','|') REGEXP '[9,7]'
答案 1 :(得分:0)
请注意,我并不认真提倡这个解决方案......
SELECT * FROM my_table WHERE FIND_IN_SET(5,catid) OR FIND_IN_SET(2,catid);