首页 文章

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

提问于
浏览
0

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

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

  • 4

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

  • 0

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

相关问题