다른 프로그래밍 언어와 마찬가지로 SQL Server 역시 조건에 따라 명령 실행 흐름을 제어할 수 있는 IF...ELSE 문을 제공합니다. 이번 글에서는 IF...ELSE 문의 기본 문법과 함께 실제 예제를 통해 누구나 쉽게 이해할 수 있도록 자세히 정리해 보겠습니다.
IF...ELSE 문이란?
SQL Server에서 IF...ELSE 문은 조건부 실행을 처리할 때 사용됩니다. 조건식이 참(TRUE)이면 해당 명령을 실행하고, 거짓(FALSE)이면 다른 명령을 실행하는 방식으로 동작합니다.
IF...ELSE 문법
SQL Server에서 IF...ELSE 분기문을 사용하려면 다음과 같은 문법을 따릅니다.
IF 조건
{조건이 참(TRUE)일 때 실행되는 명령문}
[ELSE
{조건이 거짓(FALSE)일 때 실행되는 명령문}]
참고 사항:
- ELSE 절은 필수가 아닙니다. IF 조건이 거짓(FALSE), 즉 조건을 충족하지 않을 때 별도의 명령문을 실행하고 싶은 경우에만 ELSE를 사용하면 됩니다.
- ELSE IF는 지원되지 않습니다. SQL Server의 IF...ELSE 문에는 ELSE IF 조건이 없으므로, 여러 개의 IF...ELSE 문을 중첩해서 사용해야 원하는 분기 로직을 구현할 수 있습니다.
IF...ELSE 구조 다이어그램

예제 1. ELSE 절이 있는 IF...ELSE 문
DECLARE @salary INT;
SET @salary = 15000000;
IF @salary > 10000000
PRINT '부장';
ELSE
PRINT '사원';
GO
위 예제에서 변수 @salary(직원 급여)가 10,000,000보다 크면 '부장'이 출력되고, 그렇지 않으면 '사원'이 출력됩니다.
예제 2. ELSE 절이 없는 IF 문
ELSE 절은 선택 사항이므로 필요하지 않다면 생략할 수 있습니다.
DECLARE @salary INT;
SET @salary = 15000000;
IF @salary < 10000000
PRINT '사원';
GO
이 문장에서는 @salary 값이 10,000,000보다 작을 때만 결과가 출력되며, 조건을 만족하지 않으면 아무 작업도 수행되지 않습니다.
예제 3. 중첩된 IF...ELSE 문
SQL Server에서는 다른 언어처럼 ELSE IF를 바로 작성할 수 없기 때문에, 여러 개의 IF...ELSE 문을 중첩해야 원하는 효과를 얻을 수 있습니다.
DECLARE @salary INT;
SET @salary = 15000000;
IF @salary > 12000000
PRINT '이사';
ELSE
BEGIN
IF @salary > 10000000
PRINT '부장';
ELSE
PRINT '사원';
END;
GO
이 예제는 다음과 같이 해석할 수 있습니다. 급여가 12,000,000보다 크면 '이사'가 출력됩니다. 첫 번째 조건을 만족하지 못하면 두 번째 조건으로 넘어가 급여가 10,000,000보다 큰지 확인하고, 크면 '부장', 그 외의 경우에는 '사원'이 출력됩니다.
마무리
IF...ELSE 문은 저장 프로시저나 배치 스크립트에서 조건 분기를 처리할 때 매우 유용하게 활용됩니다. ELSE 절이 선택 사항이라는 점, 그리고 ELSE IF가 지원되지 않아 BEGIN...END 블록으로 중첩해야 한다는 점만 기억하면 다양한 조건 로직을 손쉽게 구현할 수 있습니다.