본문 바로가기
CS/데이터베이스

[Oracle] IF문 SQL구현 (CASE)

by 김크롱 2020. 9. 6.

IF문 SQL구현 (CASE)

: SQL로 IF문 구현

- 등호(=)와 부등호(<,>,<=, >=) 모두 비교 가능

 

사용 예시

SELECT column1, column2, column3, CASE WHEN column3 >= 5000 THEN 1000
                                       WHEN column3 >= 3000 THEN 500
                                       WHEN column3 >= 1000 THEN 100
                                       ELSE 0 END AS nickname
    FROM tablename
    WHERE column2 IN('KOREA', 'USA');

: column2가 'KOREA', 'USA'일 때, column3가 5000 이상이면 1000, 5000보다 작고 3000 이상이면 500, 3000 보다 작고 1000 이상이면 100, 나머지는 0을 nickname에 출력

 

IF문 표현

IF문 내용
IF column3 >= 5000 THEN 1000 column3가 5000 이상이면 1000 출력
ELSE IF column3 >= 3000 THEN 500 column3가 5000 보다 작고 3000 이상이면 500 출력
ELSE IF column3 >= 1000 THEN 100 column3가 3000 보다 작고 1000 이상이면 100 출력
ELSE 0 위 모든 조건이 아니라면 0 출력

 

 

CASE의 NULL 사용 예시

SELECT column1, column2, column3, CASE WHEN column3 is null THEN 1000
                                       ELSE 0 END as nickname
    FROM tablename
    WHERE column2 IN('KOREA','USA');

: column3가 null이면 1000, 아니면 0을 nickname에 출력

 

IF문 표현

IF문 내용
IF column3 is null THEN 1000 column3가 null이면 1000 출력
ELSE 0 아니면 0 출력

 

 

 

CASE의 조건 활용 예시

SELECT column1, column2, CASE WHEN column2 IN('KOREA', 'USA') THEN 500
                              WHEN column2 IN('GERMANY', 'ITALY') THEN 300
                         ELSE 0 END as nickname
    FROM tablename;

: column2가 'KOREA', 'USA'이면 500, column2가 'GERMANY', 'ITALY'이면 300, 아니면 0을 nickname에 출력

 

IF문 표현

IF문 내용
IF column2 IN('KOREA', 'USA') THEN 500 column2가 'KOREA', 'USA'면 500 출력
ELSE IF column2 IN('GERMANY', 'ITALY') THEN 300 'GERMANY', 'ITALY'면 300 출력
ELSE 0 아니면 0

 

'CS > 데이터베이스' 카테고리의 다른 글

[Oracle] 최소값 출력 (MIN)  (0) 2020.09.07
[Oracle] 최대값 출력 (MAX)  (0) 2020.09.07
[Oracle] IF문 SQL구현 (DECODE)  (0) 2020.09.06
[Oracle] NULL 값 대신 출력 (NVL, NVL2)  (0) 2020.09.04
[Oracle] 암시적 형 변환  (0) 2020.09.04