在String中计算分隔符并使用循环在SQL Server中的分隔符之间拆分另一个字符

时间:2013-07-17 06:03:01

标签: sql-server

我在SQL Server 2008中有一个过程,我有一个查询如下:

 SELECT @symbol += N'' + acc_no FROM dbo.sav_acc_mcg where scheme_id = @scheme_id and  status in (1,2) order by acc_no

从表中提取所有“acc_no”并将其保存到@symbol中。但“acc_no”的长度可以单独变化。所以我想我可以使用分隔符来分隔每个“acc_no”,然后使用循环通过检查分隔符来提取每个单词“acc_no”。另外我需要计算“acc_no”的数量。 如果每个“acc_no”的长度相同且没有分隔符,例如10。我可以使用以下代码来计算“acc_no”的数量:

@count = len(@symbol)/10

要提取每个“acc_no”,我可以使用以下代码:

@loop =  0 

在while循环中运行下面的代码,直到@ loop< @count:

@acc_no = SUBSTRING(@symbol, (@loop*10)+1 , 10)

...................等

但是由于“acc_no”的长度不同,上述代码将无效。

如何完成工作。 我的要求是: 如果

@symbol = PS-000001,GS-000002,CFS-000008,NS001-000016,CFS-000017,LS2-000019,......etc

我需要计算“acc_no”的数量,然后为我的其他工作提取每个“acc_no”。

欢迎提供帮助。

1 个答案:

答案 0 :(得分:1)

我认为这可以胜任。

while @index1 < LEN(@symbol)
begin
set @index2 = CHARINDEX(',',@symbol,@index1)
set @op = substring(@symbol,@index1,@index2-@index1)
print @op
set @index1 = @index2+1
end