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

这个问题在这里已有答案:

我有这个表,并希望选择包含“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)

2 years ago

select * from where field like'%22%';

2 years ago

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
...