如何在IF语句块中声明多个变量?

时间:2018-04-16 19:41:17

标签: sql-server tsql

因此,如果我删除所有SET @Chars行,那么下面的内容非常有用,不知何故,@ Chars未被拾取。通过直接设置变量并逐个测试来测试,所以代码很好,变量设置部分有问题。非常感谢任何提示,谢谢

这是我的代码:

\p{InCyrillic}

2 个答案:

答案 0 :(得分:1)

您错放了BEGIN声明

IF @WorkC = 'Cut'
BEGIN
  SET @WorkC2 = '%Cut%'
  SET @Chars = 4
END

Yough,您可以一起删除BEGINEND

IF @WorkC = 'Cut'
  SET @WorkC2 = '%Cut%'
  SET @Chars = 4

但通常情况下,这可以通过CASE语句更清晰地完成。

select 
    @WorkC2 = case 
                when @WorkC = 'Cut' then '%Cut%'
                when @WorkC = 'Frame' then '%Frame%'
                ...
              end

    ,@Chars = case 
                when @WorkC = 'Cut' then 4
                when @WorkC = 'Frame' then 6
                ...
              end

但是,您可以删除@WorkC并使用连接显式设置它并保存大量的文字:

set @WorkC = '%' + @WorkC + '%' 

并且,更容易设置@Chars ...请注意,您需要在之前在每端添加%,或者如果您在<%>之后执行此操作,请将其设为-1 / p>

set @Chars = len(@WorkC) + 1

答案 1 :(得分:1)

您需要将BEGIN放在IF语句中,如下所示:

IF @WorkC = 'Cut'   
BEGIN   
   SET @WorkC2 = '%Cut%'   
   SET @Chars = 4   
END

IF @WorkC = 'Frame'
BEGIN
  SET @WorkC2 = '%Frame%'
  SET @Chars = 6
END
...