我的表SHIRTS
中有一个字段COLORS (varchar(50))
,其中包含一个逗号分隔的字符串,比如1,2,5,12,15,
。每个数字表示可用颜色。
在运行查询select * from shirts where colors like '%1%'
以获取所有红色衬衫(color=1)时,我还获得了颜色为灰色(=12)和橙色(=15)的衬衫。
我应该如何重写查询,以便只选择颜色1,而不是所有包含数字1的颜色?
发布于 2011-02-18 02:39:20
经典的方法是在左边和右边加逗号:
select * from shirts where CONCAT(',', colors, ',') like '%,1,%'
但是find_in_set也可以工作:
select * from shirts where find_in_set('1',colors) <> 0
发布于 2011-02-18 02:40:22
在这种情况下,FIND_IN_SET是你的朋友
select * from shirts where FIND_IN_SET(1,colors)
发布于 2011-02-18 02:38:17
看一下MySQL的FIND_IN_SET函数。
SELECT *
FROM shirts
WHERE FIND_IN_SET('1',colors) > 0
https://stackoverflow.com/questions/5033047
复制相似问题