在sql server存储过程中创建和循环列表

问题描述:

有没有办法使用T-SQL在sql server存储过程中声明项目列表,然后遍历项目?在sql server存储过程中创建和循环列表

我试图做这样的事情:

input_string = 'my dog has fleas.' 
list_remove = 'a', 'e', 'i', 'o', 'u' 

for each item in list remove 
    input_string = replace(input_string, item, '') 
end 

而在最后input_string是 '我的DG HS FLS。'

我知道我们可以在存储过程中创建一个表。这是做这种事的最好方法吗?

您有几种选择。 OMG小马是其中之一。您也可以使用表变量(@)或临时表(#)。 @和#之间的主要区别在于@表是一个变量并将信息存储在内存中,而#表将其存储在临时数据库中(如果两个或多个sp副本在同一时间)。你会发现如果你的表格比几十条记录大,@表格可能会变慢。这是因为它的存储方式。请阅读*的this了解更多信息。此外,您可以使用while循环,但如果您计划在临时表中有大量列,我将使用游标,请阅读msdn article以获取更多信息。游标还可以让你在桌面上轻松地来回移动。另外,如果你想让它们变快,只需使用FAST FORWARD选项,这使得它们大致和SQL中的WHILE循环一样快。

看看Arrays and Lists in SQL Server不知道是什么版本的SQL Server你所以挑选从BTW适用于您

对于您的问题,页面的一个你可以做一个更换,更换输入字符'

您可以使用table variable临时存储一组数据。

用途:

DECLARE @input_string NVARCHAR(25) 
DECLARE @ascii INT 

SET @input_string = 'my dog has fleas.' 
SET @ascii = 97 

-- 97, 101, 105, 111, 117 

WHILE @ascii <= 117 
BEGIN 

    SET @input_string = REPLACE(@input_string, CHAR(@ascii), '') 

    SET @ascii = CASE @ascii 
       WHEN 97 THEN 101 
       WHEN 101 THEN 105 
       WHEN 105 THEN 111 
       WHEN 111 THEN 117 
       END 
END 

PRINT @input_string