如何从sql中的multivalue属性获取单个值

时间:2014-02-06 12:44:09

标签: sql

我有一个名为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.如何解决?

2 个答案:

答案 0 :(得分:2)

您的查询不起作用,因为它与12以及2匹配。

你可以通过在两边附加分隔符来解决这个问题:

select name
from student
where charindex(',2,', ','+subjectcode+',') > 0;

那就是说,你真的需要另一张桌子,这是学生和科目的关联。这个表格StudentSubjects有两个重要的列:StudentIdSubjectCode。如果你有这样一个表,使用标准的SQL结构就可以很容易地进行查询。

答案 1 :(得分:0)

拆分CSV值并使用IN子句,如下所示:

 select name from student where '2' IN Split(',', SubjectCode)

对于Split使用,例如,函数提到了in this question