我有此表,希望选择完全包含“ 22”的行。
id field
1 22
2 22,24,78
3 1,22,347
4 2,21,22
5 22,222
选择上方的行,而不是下方的行。
6 222
7 21,23
8 220,322
答案 0 :(得分:4)
REGEXP
运算符在这里很方便:
SELECT *
FROM yourTable
WHERE field REGEXP '[[:<:]]22[[:>:]]';
我们也可以尝试使用FIND_IN_SET
:
SELECT *
FROM yourTable
WHERE FIND_IN_SET('22', field) > 0;
如果其他所有方法都失败了,我们可以使用LIKE
,但需要花费更多的精力:
SELECT *
FROM yourTable
WHERE CONCAT(',', field, ',') LIKE '%,22,%';
但是,通常,在数据库表中存储CSV(逗号分隔值)是一种不好的做法。最好将每个field
值存储在单独的行中,例如使用这个:
id field
1 22
2 22
2 24
2 78
...
答案 1 :(得分:0)
从“%22%”之类的字段中选择*;