2014-01-16 64 views
0

我正在使用SQL Server 2008.我有一个“课程”表,其中有一列名为“课程”。我在表格“课程”中插入“课程”并获得一个字符串例如“数学英语物理”。SQL拆分字符串

如何分割一个字符串以便我可以访问每个课程?如何将字符串拆分为一个空格并访问索引1中应返回“英语”的项目?

+0

先得到结果然后拆分 –

+2

这是遗留系统吗?你可以改为规范化你的数据库?显然你有某种东西和过程之间的1:n关系,如果可能的话,你应该相应地设计分贝。 –

回答

1

如下创建用户定义函数(UDF):

Declare @course varchar(200) = 'Math English Physics' 
Declare @individual varchar(20) = null 

WHILE LEN(@course) > 0 
BEGIN 
    IF PATINDEX('% %',@course) > 0 
    BEGIN 
     SET @individual = SUBSTRING(@course, 0, PATINDEX('% %',@course)) 
     SELECT @individual 

     SET @course = SUBSTRING(@course, LEN(@individual + ' ') + 1, 
                LEN(@course)) 
    END 
    ELSE 
    BEGIN 
     SET @individual = @course 
     SET @course = NULL 
     SELECT @individual 
    END 
END 

我希望这可以解决您的问题。

我相信你应该重组你的数据库并对其进行规范化。

+0

使得所有varchar操作都不利于性能。一个一个地选择它们也是一个糟糕的主意。你可以使用eather递归sql或者xml分割更加有效 –

+0

ya我同意你@ t-clausen.dk – Pawan

+0

'@products'是什么?自定义代码一点.. –