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

标签 sql mysql database

我的表 SHIRTS 中有一个字段 COLORS (varchar(50)),其中包含逗号分隔的字符串,例如 1,2,5, 12,15,。每个数字代表可用的颜色。

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

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

最佳答案

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

select * from shirts where CONCAT(',', colors, ',') like '%,1,%'

但是find_in_set也有效:

select * from shirts where find_in_set('1',colors) <> 0

关于sql - MySQL 查询在逗号分隔的字符串中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51220470/

相关文章:

database - 从无限流中选择 10% 的随机数

java - 有没有办法限制 Hibernate envers 的审计日志量?

mysql - 列出两个表对应的数据

SQL Server : return column names based on a record's value

php - 在关注者和关注者关系表上获取共同好友

php - 使用 SQL 选择查询的结果来更新表

c# - 如何从 GridView 更新事件中的 GridView 编辑事件中获取保存在字符串中的值?

mysql - 对连接结果进行排序时,索引是否会提高性能

php - 使用 PHP for 循环的 SQL 更新时间太长

mysql - 如何将文件转换为带有外键的INSERT?