如果你只想选择那些包含1的内容,可以使用以下代码:
where colm like '1,%'
or colm like '%,1,%'
or colm like '%,1'
or colm = '1'
但你应该注意到这将是一个性能杀手。 如果你曾经发现自己需要操纵小于列的东西,那么你的数据库模式设置得很糟糕。上面查询不执行良好的原因是不可能使用索引快速定位满足查询条件的行。 它将需要完整的表格或索引扫描以获取行。
重新设计模式将适用于另一个表中的逗号分隔内容,这样会更好。
例如:
PrimaryTable:
id integer primary key
other_stuff varchar(250)
SecondaryTable:
primary_id integer references PrimaryTable(id)
int_val integer
char_val varchar(20)
primary key (primary_id,int_val)
index (int_val)
这将使您能够编写极快的查询,而不是您提出的慢速查询:
select p.id, p.other_stuff
from PrimaryTable p, SecondaryTable s
where p.id = s.primary_id
and s.int_val = 1;
(或等效的显式连接语法)。
这个解决方案之所以更快,是因为它可以使用索引在SecondaryTable.int_val
上快速检索相关行,并使用两个表的主键进行交叉匹配。