2012-05-05 2 views
12

SQL 서버의 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' 

여러 흑자는 단지 하나의 플러스처럼 행동하는 것. 왜 "다중 플러스 연산자"++이 존재합니까? 그것은 무엇을합니까?

+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)) 그래서 당신이 문자열, 문자열 '1'문자열을 '합치하는

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

같은 논리를 의미한다 (+2)을 의미 2 ', 결과'12 '

관련 문제