2012-05-05 14 views
12

SQL Server sembra per consentire a più segni più in successione:SQL Server: cosa significa 1 ++ 2? sintassi T-SQL di

SELECT 1 + 2 --3 
SELECT 1 ++ 2 --3 
SELECT 1 ++++++ 2 --3 
SELECT 1 + '2' --3 
SELECT 1 ++ '2' --3 
SELECT '1' + '2' --'12' 
SELECT '1' ++ '2' --'12' 

più vantaggi sembrano comportarsi proprio come un singolo più. Perché esiste il "più operatore multiplo" ++? Che cosa fa?

+0

'SELECT +' A string'' è [discusso qui] (https://connect.microsoft.com/SQLServer/feedback/details/718176/concatenation-operator-not-working- correttamente) –

risposta

15

Il primo segno più è interpretato come un operatore di addizione. Ciascuno dei restanti segni più viene interpretato come un unary plus operator:

1 ++ 2 means 1 + (+2) 
1 +++ 2 means 1 + (+(+2)) 

E 'molto comune nei linguaggi di programmazione ad avere questa unario più operatore, anche se è raramente utilizzato in SQL come in realtà non fa nulla.

Sebbene un plus unario possa comparire prima di qualsiasi espressione numerica, non esegue alcuna operazione sul valore restituito dall'espressione. In particolare, non restituirà il valore positivo di un'espressione negativa.

L'operatore unario più è citato nello standard SQL-92.

Così come il solito aritmetica operatori, più, meno, i tempi, dividere, unario più, e meno unario, vi sono le seguenti funzioni che restituiscono numeri: ...

Mentre Unario plus non è molto utile, ha un compagno più utile: unario meno. È anche noto come negative operator.

SELECT -(expression), ... 
-- ^unary minus 
+0

Sembra l'ultimo (più a destra) più il segno è interpretato come addizione e tutti gli altri come operatori unari. 'SELEZIONA 5 - - + 1' valuta a 6 –

3

SELECT 1 ++ 2 significa 1 più (2) che significa 3

stessa logica per gli altri 1+(+(+2)) e così via

SELECT '1' + '2' --'12' si sta concatenato 2 stringhe, stringhe '1' e '2 stringhe ', che risulta' 12 '