sql查询-like语句没有得到正确的结果

bt1cpqcv  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(401)

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

在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
表名:学生:

id    name     topics
---   ----     --------
1     Test1    1,2,10,15,25
2     Test2    5,21,11,18,13
3     Test3    2,1,16,25,10
4     Test4    2

我的问题:

select * from student where topics like '%2%'

输出:全部4条记录。预期:但我只需要获得3条记录,因为id 1,3,4 topics列包含2条。第二条记录不包含2。

bejyjqdl

bejyjqdl1#

像这样的东西可能有用吗?

SELECT * FROM student WHERE topics LIKE '2,%' OR topics LIKE '%,2,%' OR topics LIKE '%,2' OR topics= '2';

很遗憾,你不能用在喜欢。

yx2lnoni

yx2lnoni2#

第二条记录包含2。你需要用这样的东西。

WHere topics=2 or topics like '2,%'or topics like '%,2' or topics like '%,2,%'

第一个检查topics是否为2。第二个如果2是第一个,但是还有其他的。第三个检查2是否是最后一个,但前面有一些数字,第四个检查2是否介于两者之间

yzuktlbb

yzuktlbb3#

您可以使用函数find\ in\ u set:

select * from student where FIND_IN_SET ('2', topics)

相关问题