저는 DB를 사용할 때 CASE WHEN과 IF를 둘 다 사용해요.
IF의 경우에는 프로시저나 그런 곳에서
쿼리 등을 나눌 때 사용하고,
CASE WHEN 같은 경우에는 SELECT문 안에서 결과값을 나누거나 할 때 사용해요.
반대로도 사용할 수 있는지는 모르겠으나,
전 위처럼 사용해요.
사용하는건 CASE WHEN과 거의 동일해요.
사용하는 곳만 다를 뿐 방법도 거의 비슷해요.
상황도 거의 비슷하고요.
사용하는 상황은 크게 3가지로 나눌 수 있을거 같아요.
1. 단일 조건의 참
2. 단일 조건의 참과 거짓
3. 다중 조건의 참과 거짓
물론 3번의 경우,
나눈다면 다중 조건의 참과
다중 조건의 참과 거짓으로 나눌 수 있을거 같아요.
그런데 이거는 어차피 ELSE 문만 제외를 하면 되는 거라서
별도로 구분은 안했어요.
1. 단일 조건의 참
CASE WHEN이나, 다른 개발 언어들 처럼
아니면 EXCEL에서도 쓰는 것 처럼
조건에 참일 경우에만 동작을 하는 거에요.
쿼리는 아래와 같이 작성을 하면 되요.
IF문 조건을 위해서 임시변수로 @tmp를 선언해서 사용했습니다.
--IF를 하기 위한 임시 변수. 조건은 각각 상황에 맞춰주시면 되십니다. DECLARE @tmp INT SET @tmp = 1 IF @tmp = 1 BEGIN PRINT '1입니다' END
그러면 결과는 아래 처럼 나옵니다.
@tmp의 값을 기준으로 1일 경우에는 '1입니다'를 출력하는 것입니다.
2. 단일 조건의 참과 거짓
1번의 IF문에서 ELSE만 추가를 한 것입니다.
예시 쿼리는 다음과 같습니다.
--IF를 하기 위한 임시 변수. 조건은 각각 상황에 맞춰주시면 되십니다. DECLARE @tmp INT SET @tmp = 2 IF @tmp = 1 BEGIN PRINT '1입니다' END ELSE BEGIN PRINT '1이 아닙니다' END
위처럼 쿼리를 작성하면 아래처럼 결과가 나옵니다.
위에서는 @tmp의 값을 2로 해놓았기 때문에
'1이 아닙니다'라는 문구가 나오게되는 것입니다.
3. 다중 조건의 참과 거짓
2번에서 ELSE IF만 추가를 하면 됩니다.
예시 쿼리는 다음과 같습니다.
--IF를 하기 위한 임시 변수. 조건은 각각 상황에 맞춰주시면 되십니다. DECLARE @tmp INT SET @tmp = 2 IF @tmp = 1 BEGIN PRINT '1입니다' END ELSE IF @tmp = 2 BEGIN PRINT '2입니다' END ELSE BEGIN PRINT '1과 2 모두 아닙니다' END
위처럼 쿼리를 작성하면 아래처럼 결과가 나옵니다.
첫번째 조건이 참이 아니기 때문에
ELSE IF로 넘어가서 2번째 조건에서 참이라서 2번째 쿼리인
'2입니다'가 출력이 되는 것입니다.
만약 두번째 조건도 거짓이였으면
ELSE에 따른 문구가 나왔을 겁니다.
그리고 참고!!!!!!!!!
저는 BEGIN을 사용을 했습니다.
사용을 안해도 무방은 합니다.
다만, BEGIN을 사용을 안하면 한 줄에 대해서만 동작이 되는 것으로 알고 있습니다.
JAVA나 다른 언어에서도 IF문이 있고
사용을 할 때 { } 써도 되고 안써도 되는 것과 같다고 보면 될 거 같습니다.
JAVA로 된 예를 들면 다음과 같습니다.
//BEGIN 안 붙인 것 if(aa.equals("aa")) System.out.println("aaaaaa"); //BEGIN 붙인 것 if(aa.equals("aa")) { System.out.println("aaaaaa"); }
위처럼 차이가 있는 상황입니다.
저는 버릇이라고 할 수도 있는데
항상 BEGIN을 사용합니다.
개발을 할 때도 항상 { } 을 사용하고요.
한줄로 생각하고 했다가 여러줄일 경우,
추가를 해야 하는데 깜빡하는 경우도 있으니깐요.
그래서 미리 넣어놓아요.
이건 버릇이라고 할 수도 있는 거라서
사용하시는 분이 편하신 대로 사용하시면 되십니다.
이상으로 SQL Server(MS SQL)에서의 IF문 사용방법이였습니다
'컴퓨터관련 > MS-SQL' 카테고리의 다른 글
[MS-SQL]트리거 확인하기 (0) | 2019.04.01 |
---|---|
[MS-SQL]TOP에 변수 사용하여 데이터 가져오기 (0) | 2019.03.29 |
[MS-SQL]행 일련번호 가져오기 (0) | 2019.03.21 |
[MS-SQL]SSMS 단축키 지정하기 (0) | 2019.03.20 |
[MS-SQL]조건문 CASE WHEN 사용하기 (2) | 2019.03.18 |