SQL接受多个' +'虽然编码但不会产生运行时错误,为什么?

时间:2016-02-16 22:30:13

标签: sql-server tsql ssms

这些代码行:

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

与这些相同(根据SSMS):

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

为什么没有SSMS关注或考虑多个+

1 个答案:

答案 0 :(得分:0)

第一个加号将被解释为添加操作(将左值添加到左值并返回结果)。所有后续加号将作为其右值的一元加,即“返回后面的数值表达式的值” - 这可以链接:

+(+(+(+1)))

哪个是没有意义的,但它是有效的语法。 如果T-SQL定义了x++增量运算符,那将是一个不同的故事。没有当前版本的T-SQL。自SQL Server 2008起添加了+=-=,但--++没有。