0

我在 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)

...................,ETC

但是由于“acc_no”的长度不同,上面的代码将不起作用。

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

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

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

帮助是最受欢迎的。

4

1 回答 1

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
于 2013-07-17T06:26:44.940 回答