我有一个名为student的表。表有4列。
学生:表
Id Name RollNo SubjectCode
1 Rani B0101 1,3,5,7,12
2 Samidha B0102 1,2,4,6,12
我想找出主题代码为2的学生的姓名。
查询:
select name from student where charindex('2',subjectcode) > 0
但是当主题代码包含12时出现问题。因为12包含2.如何解决?
答案 0 :(得分:2)
您的查询不起作用,因为它与12
以及2
匹配。
你可以通过在两边附加分隔符来解决这个问题:
select name
from student
where charindex(',2,', ','+subjectcode+',') > 0;
那就是说,你真的需要另一张桌子,这是学生和科目的关联。这个表格StudentSubjects
有两个重要的列:StudentId
和SubjectCode
。如果你有这样一个表,使用标准的SQL结构就可以很容易地进行查询。
答案 1 :(得分:0)
拆分CSV值并使用IN
子句,如下所示:
select name from student where '2' IN Split(',', SubjectCode)
对于Split
使用,例如,函数提到了in this question。