【问题标题】:Why does this work in SSMS?为什么这在 SSMS 中有效?
【发布时间】:2016-02-18 01:33:02
【问题描述】:

那天晚上我在上数据库课,我们注意到下面的代码似乎可以工作,但我们无法从逻辑上理解为什么。

DECLARE @counter  integer
SET @counter = 42
WHILE @counter < 52
BEGIN 
    set @counter = @counter+++++ + 1
    PRINT 'The counter is ' + cast(@counter as char) 
END

我们意识到我们可以在 @counter 变量上添加任意数量的 +,而 SSMS 似乎并不关心,即使它与原始变量不匹配。有人碰巧知道为什么会这样吗?

【问题讨论】:

  • 有趣。如果将其更改为+-1,它将进入无限循环。如果您将其更改为+-+-+1,它也可以工作。
  • 您可能会发现this 很有帮助。基本上,我猜测只有第一个“+”被评估,所有其他“+”被视为“这是一个正数”。所以 ++1 和 +Positive1 一样

标签: sql ssms


【解决方案1】:

+ 附加到变量名不会更改变量名,因为空格会被忽略(并且 + 无论如何都不是变量名中的有效字符) .

请参阅here,了解为什么多个 + 标志有效的讨论。本质上,第一个之后的每个 +(或 -)都被视为一元运算符。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 2011-03-12
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多