我在我的表SHIRTS中有一个字段COLORS (varchar(50)),它包含一个逗号分隔的字符串,例如1,2,5,12,15,。每个数字代表可用的颜色。
当运行查询select * from shirts where colors like '%1%'来获取所有红色的衬衫(颜色=1)时,我还会得到颜色为灰色(=12)和橙色(=15)的衬衫。
我应该如何重写查询,以便只选择颜色为1而不是包含数字1的所有颜色?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
FIND_IN_SET在这种情况下是你的朋友
经典的方法是在左右两边添加逗号:
select * from shirts where CONCAT(',', colors, ',') like '%,1,%'但是find_in_set也可以使用:
select * from shirts where find_in_set('1',colors) <> 0