728x90
IF ELSE 구문 (조건문)
IF (조건식)
BEGIN
조건식이 참일경우 SQL구문
END
ELSE
BEGIN
조건식이 거짓일경우 SQL구문
END
IF (조건식1)
BEGIN
조건식1이 참일경우 SQL구문
END
ELSE IF (조건식2)
BEGIN
조건식1이 거짓이고, 조건식2가 참일경우 SQL구문
END
ELSE
BEGIN
조건식1,2 모두 거짓일경우 SQL구문
END
예제와 함께 살펴보자
조건식 (1=1)이 참일 경우 IF의 BEGIN... END 안에 있는 SQL 구문이 실행된다.
IF (1=1)
BEGIN
PRINT('참')
END
ELSE
BEGIN
PRINT('거짓')
END
결과
조건식 (1=2)이 거짓일 경우 ELSE의 BEGIN... END 안에 있는 SQL 구문이 실행된다.
IF (1=2)
BEGIN
PRINT('참')
END
ELSE
BEGIN
PRINT('거짓')
END
결과
조건문 IF와 메시지를 출력하는 PRINT를 같이 사용할 때 조심하도록 하자
IF (1=2)
BEGIN
SELECT '오면안돼'
END
아래와 같이 조건식 뒤에 PRINT 1 구문이 올 경우 BEGIN...END 구문이 조건식에 걸리지 않게 된다.
조건식 (1=2)는 거짓이기 때문에 BEGIN... END 구문이 실행되지 않을 것을 기대했지만,
PRINT 1 구문이 실행되지 않고 다음 BEGIN...END 구문은 실행되고 만다.
IF (1=2) PRINT 1
BEGIN
SELECT '오면안돼'
END
IF (1=2)
PRINT 1
BEGIN
SELECT '오면안돼'
END
결과
간단한 쿼리문일 때는 실수하지 않겠지만, 조건문이 길고 BEGIN END까지 따로 지정되어있지 않다면?
IF (조건...
AND 조건...
...)
AND ...
OR ..
PRINT 'A'
SELECT '오면안돼'
간단한 PRINT 사용 실수로 원치 않는 결과를 가져올 수 있다.
728x90
'MS-SQL' 카테고리의 다른 글
Merge 문이란? (feat. 조건부 데이터 변경) (2) | 2022.12.17 |
---|---|
단일 사용자 모드 해제 (2) | 2022.12.15 |
Convert(), Cast() 함수 사용예제 (0) | 2022.12.13 |
WITH (NOLOCK) 의 개념 (0) | 2022.12.13 |
WITH 구문, CTE(Common Table Expression)이란? (2) | 2022.12.11 |