SQL查询 - 没有从Like语句中获得正确的结果

时间:2018-06-06 12:49:19

标签: mysql sql

表名:学生:

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主题栏包含2.第2条记录不包含2条。

3 个答案:

答案 0 :(得分:1)

您可以使用FIND_IN_SET函数:

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

答案 1 :(得分:0)

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

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

首先检查主题是否为2.如果2是第一个,则第二个,但还有其他。第三个检查2是否是最后一个,但之前有一些数字,并且第四个检查2是否介于两者之间

答案 2 :(得分:0)

这样的事可能会有所帮助吗?

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

很遗憾你不能和LI一起使用IN。