SQL Server IF…ELSE 조건문: T-SQL SELECT 예제
⚡ 스마트 요약
IF…ELSE는 SQL Server에서 부울 조건이 참으로 평가될 때 하나의 T-SQL 블록을 실행하고, 동일한 조건이 거짓으로 평가될 때 선택적으로 다른 블록을 실행하는 흐름 제어 문입니다.

조건문이 필요한 이유는 무엇입니까?
SQL Server의 조건문은 다양한 조건에 대해 서로 다른 논리와 동작을 정의하는 데 도움이 됩니다. 조건문을 사용하면 문 내에 정의된 조건에 따라 다양한 작업을 수행할 수 있습니다. 실제 생활에서 우리는 다른 활동이나 상황의 결과에 따라 여러 가지 작업을 수행합니다.
조건문의 실시간 예시는 다음과 같습니다.
- 내일 비가 오면 차를 타고 여행을 갈 계획이에요.
- 만약 제가 사는 도시에서 유럽까지 가는 항공권 가격이 400달러 미만이라면 유럽으로 휴가를 갈 것이고, 그렇지 않다면 가까운 관광지를 선택할 것입니다.
여기서 볼 수 있듯이, 위의 자동차 여행과 같은 한 가지 행동은 다른 활동의 결과, 즉 "내일 비가 올지 안 올지"에 조건부로 의존합니다. 마찬가지로 MS도 그렇습니다. SQL 서버 또한 T-SQL 문을 조건부로 실행할 수 있는 기능도 제공합니다.
SQL Server의 IF…ELSE 문
MS SQL에서 IF…ELSE는 조건문의 한 유형입니다. 모든 T-SQL 문은 IF…ELSE를 사용하여 조건에 따라 실행할 수 있습니다. 아래 그림은 SQL Server에서 IF 및 ELSE 분기가 작동하는 방식을 설명합니다.
- 조건이 참으로 평가되면 SQL Server에서 IF 조건 다음에 오는 T-SQL 문이 실행됩니다.
- 조건이 거짓으로 평가되면 ELSE 키워드 뒤에 오는 T-SQL 문이 실행됩니다.
- IF T-SQL 문이나 ELSE T-SQL 문 중 하나가 실행되면 다른 무조건 T-SQL 문은 계속 실행됩니다.
SQL의 IF…ELSE 구문 및 규칙
구문 :
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
규칙 :
- 조건은 부울 표현식이어야 합니다. 즉, 조건 평가 결과가 부울 값이어야 합니다.
- SQL의 IF…ELSE 문은 단일 T-SQL 문 또는 T-SQL 문 블록을 조건부로 처리할 수 있습니다.
- 문장 블록은 BEGIN 키워드로 시작하고 END 키워드로 끝나야 합니다.
- BEGIN과 END를 사용하면 SQL Server가 실행해야 하는 문 블록을 식별하고 IF…ELSE T-SQL 블록에 속하지 않는 나머지 T-SQL 문과 구분할 수 있습니다.
- ELSE는 선택사항입니다.
숫자 값만 포함된 부울 표현식의 IF…ELSE
첫 번째 예시에서 부울 표현식은 숫자 값만 사용합니다. 아래 조건을 살펴보세요. 1은 1과 같으므로 항상 참입니다.
조건: 참
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
조건이 참(1=1)일 때 쿼리를 실행하면 IF 분기 메시지가 출력됩니다.
조건: 거짓
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
조건이 거짓(1=2)인 경우, ELSE 분기가 대신 실행됩니다.
'라는 이름의 테이블이 있다고 가정해 봅시다.Guru아래와 같이 두 열 네 행으로 구성된 99' 형식의 형식을 사용하겠습니다.Guru다음 예시에서는 99' 테이블을 참조하십시오.
변수를 사용한 부울 표현식에서 IF…ELSE
상수 대신 부울 표현식을 사용하여 비교할 수 있습니다. 변수다음 예제는 정수형 변수를 선언하고 그 값을 테스트합니다.
조건: 참
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
@Course_ID가 4이므로 IF 분기가 실행되어 Tutorial_ID가 4인 행을 반환합니다.
조건: 거짓
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
여기서는 조건이 거짓이므로 ELSE 분기가 실행되어 Tutorial_ID가 4가 아닌 모든 행을 반환합니다.
IF…ELSE with BEGIN…END
분기에서 두 개 이상의 문장을 실행해야 하는 경우, 문장들을 BEGIN…END 블록으로 묶습니다. 아래 예제는 각 분기에서 두 개의 SELECT 문을 실행합니다.
조건: 참
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
@Course_ID가 2 이하이므로 IF 블록은 BEGIN…END 안에 있는 두 개의 SELECT 문을 모두 실행합니다.
조건: 거짓
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
이번에는 조건이 거짓이므로 ELSE 블록은 두 개의 SELECT 문을 실행합니다.
ELSE가 없는 IF 문
SQL에서 IF 문은 ELSE 부분 없이 사용할 수 있습니다. ELSE 부분은 선택 사항이기 때문입니다. 예를 들면 다음과 같습니다.
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
다음과 같은 한 줄을 출력합니다.
거짓 조건을 실행해도 아무런 결과가 나오지 않습니다. 다음 쿼리를 고려해 보세요.
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
결과는 아래와 같이 비어 있습니다.
중첩된 IF…ELSE 문
다른 것과는 달리 프로그래밍 언어SQL Server는 IF…ELSE 조건문 안에 ELSE IF 문을 제공하지 않습니다. 대신 아래와 같이 IF…ELSE 문 안에 또 다른 IF…ELSE 문을 중첩할 수 있습니다.
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
@age가 60일 경우, 중첩된 IF…ELSE 문은 다음과 같은 결과를 출력합니다.
- 이 코드는 `@age` 값이 18 미만이면 'underage'를 출력합니다.
- 그렇지 않으면 ELSE 부분이 실행됩니다. ELSE 부분에는 중첩된 IF…ELSE 문이 포함되어 있습니다.
- @age 값이 50 미만이면 'You are below 50'을 출력합니다. 위의 조건 중 어느 것도 충족하지 않으면 'Senior'를 출력합니다.











