Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server存储过程中创建列表并在其中循环_Sql_Sql Server_Tsql - Fatal编程技术网

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

在sql server存储过程中创建列表并在其中循环,sql,sql-server,tsql,Sql,Sql Server,Tsql,是否有一种方法可以使用T-sql声明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 最后,输入字符串将是“my dg hs fls” 我知道我们可以在

是否有一种方法可以使用T-sql声明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
最后,输入字符串将是“my dg hs fls”

我知道我们可以在存储过程中创建一个表。这是执行类似操作的最佳方式吗?

看看您不知道的SQL server版本,从该页面中选择一个适用于您的版本

顺便说一句,对于您的问题,您只需执行替换操作,然后将输入字符替换为“”。

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

使用:

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
DECLARE@input\u字符串NVARCHAR(25)
声明@ascii INT
SET@input\u string='我的狗身上有跳蚤。'
设置@ascii=97
-- 97, 101, 105, 111, 117

而@ascii则有几个选项。天哪,小马就是其中之一。也可以使用表变量(@)或临时表(#)。@和#之间的主要区别在于,@表是一个变量,将信息存储在内存中,#表将信息存储在临时数据库中(如果sp的两个或多个副本同时运行,则允许重复)。您会发现,如果您的表大于几十条记录,@table可能会变慢。这是因为它是如何存储的。阅读Stackoverflow以了解更多信息。此外,您可以使用while循环,但如果您计划在temp表中有大量列,我将使用游标,请阅读以了解更多信息。光标还允许您在表格中轻松地来回移动。此外,如果希望它们快速,只需使用快进选项,这使它们的速度大致与SQL中的WHILE循环一样快