sql—如何在mysql中选择包含特定数字的行?

xuo3flqw  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(289)

这个问题在这里已经有答案了

在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我有这个表,想选择正好包含“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
ebdffaop

ebdffaop1#

从where字段中选择*如“%22%”;

x8diyxa7

x8diyxa72#

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

相关问题