연산자 우선 순위(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

복합 식에 여러 연산자가 있는 경우 연산자 우선 순위에 따라 연산 시퀀스가 결정됩니다. 실행 순서는 결과 값에 큰 영향을 줄 수 있습니다.

다음 표에서는 연산자 우선 순위를 보여 줍니다. 우선 순위가 높은 연산자가 우선 순위가 낮은 연산자보다 먼저 평가됩니다. 다음 표에서 1은 가장 높은 수준이고 8은 가장 낮은 수준입니다.

수준 연산자
1 ~ (비트 NOT)
2 * (곱하기), / (나누기), % (모듈러스)
3 + (양수), - (음수), + (더하기), + (연결), - (빼기), &(비트 AND), ^ (배타적 비트 OR), | (비트 OR)
4 =, >, <, >=, <=, <>, !=, !>, !< (비교 연산자)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE 또는 SOME
8 = (배정)

한 식에서 두 연산자가 동일한 우선순위 수준을 가지면 식에서의 위치를 기준으로 왼쪽에서 오른쪽 순으로 계산됩니다. 예를 들어 다음 SET 문에 사용되는 식에서 빼기 연산자는 더하기 연산자 이전에 평가됩니다.

DECLARE @MyNumber INT;  
SET @MyNumber = 4 - 2 + 27;  
-- Evaluates to 2 + 27 which yields an expression result of 29.  
SELECT @MyNumber;  

괄호를 사용하여 식에서 연산자의 정의된 우선 순위를 재정의합니다. 괄호 안의 모든 항목은 단일 값을 생성하기 위해 평가됩니다. 해당 값은 해당 괄호 외부의 모든 연산자에서 사용할 수 있습니다.

예를 들어 다음 SET 문에 사용된 식에서 곱하기 연산자의 우선 순위가 더하기 연산자보다 높으므로 곱하기 작업이 먼저 계산됩니다. 식 결과는 .입니다 13.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * 4 + 5;  
-- Evaluates to 8 + 5 which yields an expression result of 13.  
SELECT @MyNumber;  

다음 SET 문에 사용된 식에서 괄호로 인해 더하기가 먼저 계산됩니다. 식 결과는 .입니다 18.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * (4 + 5);  
-- Evaluates to 2 * 9 which yields an expression result of 18.  
SELECT @MyNumber;  

식에 중첩된 괄호가 있는 경우 가장 깊이 중첩된 식이 먼저 계산됩니다. 다음 예제에서는 가장 깊게 중첩된 괄호 집합의 식 5 - 3 과 함께 중첩된 괄호를 포함합니다. 이 식의 결과 값은 2입니다. 그런 다음, 더하기 연산자(+)는 이 결과를 4 추가하여 값을 6생성합니다. 마지막으로 식 6 결과를 12생성하기 위해 곱 2 합니다.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * (4 + (5 - 3) );  
-- Evaluates to 2 * (4 + 2) which then evaluates to 2 * 6, and   
-- yields an expression result of 12.  
SELECT @MyNumber;  

참고 항목

논리 연산자(Transact-SQL)
연산자(Transact-SQL)
기본 제공 함수(Transact-SQL)