如何在MySQL中选择包含特定数字的行?

时间:2018-12-10 11:12:49

标签: mysql sql

我有此表,希望选择完全包含“ 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

2 个答案:

答案 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%”之类的字段中选择*;