在sql server存储过程中创建列表并在其中循环
是否有一种方法可以使用T-sql声明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” 我知道我们可以在
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循环一样快