MySQL查询在逗号分隔的字符串中查找值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有个领域COLORS (varchar(50))在我的桌子上SHIRTS,它包含逗号分隔字符串,如1,2,5,12,15,表示可用颜色的每个数字。

运行查询时select * from shirts where colors like '%1%'为了得到所有的红色衬衫(颜色=1),我还得到了颜色为灰色(=12)和橙色(=15)的衬衫。

我应该如何重写查询,以便只选择颜色1,而不是所有包含数字1的颜色?

提问于
用户回答回答于

最经典的方法是在左边和右边添加逗号:

select * from shirts where ',' + colors + ',' like '%,1,%'
select * from shirts where find_in_set('1',colors) <> 0
用户回答回答于

SELECT * 
    FROM shirts 
    WHERE FIND_IN_SET('1',colors) > 0

扫码关注云+社区