簡體   English   中英

SQL在編碼時接受多個“+”,但不會產生運行時錯誤,為什么?

[英]SQL accepts multiple '+' while coding but doesn't produce a run-time error, why?

這些代碼行:

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不關心或考慮多個+

第一個加號將被解釋為add操作(將rvalue添加到lvalue並返回結果)。 所有后續加號將作為其右值的一元加,即“返回后面的數值表達式的值” - 這可以鏈接:

+(+(+(+1)))

這是毫無意義的,但它是有效的語法。 如果T-SQL定義了一個x++增量運算符,那將是一個不同的故事。 沒有當前版本的T-SQL。 +=-=從SQL Server 2008開始添加,但是--++沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM