반응형
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 사용 실수로 원치 않는 결과를 가져올 수 있다.
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] 테이블 '#테이블명'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. (0) | 2019.11.27 |
---|---|
[MSSQL] TOP with UPDATE, DELETE (N개의 행만 수정, 삭제) (0) | 2019.11.26 |
[MSSQL] ISDATE, ISNUMERIC, ISNULL, ISJSON (0) | 2019.11.18 |
[MSSQL] paging 페이징 처리 (OFFSET ROWS FETCH) (MySQL LIMIT) (0) | 2019.11.06 |
[MSSQL] GROUP BY COUNT 그룹으로 묶어 집계하기 (2) | 2019.11.05 |