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
4

2 回答 2

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
...
于 2018-12-10T11:15:54.890 回答
0

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

于 2018-12-10T11:21:54.197 回答