表 table的结构如下:
id | title |
---|---|
1 | 12,21 |
2 | 21,32 |
3 | 45,21,78 |
4 | 221,45,74 |
5 | 34,421,121 |
6 | 52,21,321 |
现在用sql语句查出来字段里包含21的所有记录怎么办?
select * from table where title=21 or title like ’%,21’ or title like ’%,21,%’ or title like ’21,%’
这样查看看有问题吗?
肯定这样会把421 221 这样信息查出来的!
现在用这个 FIND_IN_SET 函数来查
select * from table where FIND_IN_SET('21',title);
这样就查出了, id 为 1 、2 、3 、6 这样四条信息了!
当然,也可以把title字段设置为-x-x-x-这样的格式,通过like查询%-x-%也行