2012-05-05 12 views
12

SQL ServerのT-SQLの構文は、連続して複数のプラス記号を許可しているようだ:SQL Server:1 ++ 2は何を意味しますか?

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' 

複数のプラスが1つだけプラスのように振る舞うように見えます。 「複数プラス演算子」++が存在するのはなぜですか?それは何をするためのものか?

+0

'SELECT +' A string'' [ここで説明します](https://connect.microsoft.com/SQLServer/feedback/details/718176/concatenation-operator-not-working-正常) –

答えて

15

最初のプラス記号は加算演算子として解釈されます。残りのプラス記号は、それぞれunary plus operatorのように解釈されます。

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

それはそれは実際に何もしていないとして、それはほとんどSQLで使用していないですけれども、これは単項プラス演算持っているプログラミング言語では非常に一般的です。

単項演算子は任意の数値式の前に現れますが、式から返された値に対しては何も処理を行いません。具体的には、負の式の正の値を返しません。

単項プラス演算子は、SQL-92標準で言及されています。

としてだけでなく、通常の算術演算子、プラス、マイナス、回、除算、単項プラス、および単項マイナス、番号を返す以下の機能があります...

ながら単項プラスはそれほど有用ではありませんが、より有用なコンパニオンを持っています:単項マイナス。これはnegative operatorとも呼ばれます。

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

「最後」(右端)にプラス記号は加算として解釈され、その他は単項演算子として解釈されます。 'SELECT 5 - - + 1'は6と評価されます。 –

3

SELECT 1 ++ 2 '1' 他人1+(+(+2))ための3

同じロジックを意味し、そう

SELECT '1' + '2' --'12'にあなたが2列、文字列を連結している1つのプラス(2)を意味し、文字列「2 '、結果' 12 '

関連する問題