본문 바로가기

프로그래밍/MSSQL

[MSSQL] IF ELSE 조건문 (+ PRINT 구문 사용 주의)

반응형

 

 

 

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 사용 실수로 원치 않는 결과를 가져올 수 있다.

 

 
 
 
반응형