SELECT SUBWAY_LINE,
CASE WHEN SUBWAY_LINE = '1' THEN 'BLUE'
WHEN SUBWAY_LINE = '2' THEN 'GREEN'
WHEN SUBWAY_LINE = '3' THEN 'ORANGE'
(ELSE 'GRAY')
END AS LINE_COLOR
FROM SUBWAY_INFO;
SELECT SUBWAY_LINE,
CASE SUBWAY_LINE
WHEN '1' THEN 'BLUE'
WHEN '2' THEN 'GREEN'
WHEN '3' THEN 'ORANGE'
(ELSE 'GRAY')
END AS LINE_COLOR
FROM SUBWAY_INFO;
| SUBWAY_LINE | LINE_COLOR | |
|---|---|---|
| 1 | 1 | BLUE |
| 2 | 2 | GREEN |
| 3 | 3 | ORANGE |
| 4 | 4 | GRAY |
| 5 | 5 | GRAY |
다음 SQL 결과 모두 같음.
SELECT EMP_ID,
CASE WHEN EMP_STATE = '1' THEN '재직'
WHEN EMP_STATE = '2' THEN '휴직'
WHEN EMP_STATE = '3' THEN '퇴직'
END EMP_STATE
FROM EMP;
END 뒤에 생략 또는 ALIAS 구문이 오는 것만 생각했는데 해당 컬럼 자체를 적는 것도 가능한 것 같다.
SELECT EMP_ID,
CASE EMP_STATE
WHEN '1' THEN '재직'
WHEN '2' THEN '휴직'
WHEN '3' THEN '퇴직'
ELSE NULL
END EMP_STATE
FROM EMP;
ELSE 를 생략하면 기본값은 NULL 이다.
그러므로 ELSE NULL 은 적든 안 적든 같은 결과
DECODE
SELECT EMP_ID,
DECODE(EMP_STATE, '1', '재직', '2', '휴직', '3', '퇴직') AS EMP_STATE
FROM EMP;
DECODE 문에서는 인수 개수가 짝수일 때 마지막 값이 DEFAULT 값이 된다.
인수 개수를 홀수 상태로 마무리하면 (마지막 디폴트 값을 적지 않았을 경우) CASE의 ELSE 와 마찬가지로 인수 외의 값에 대해서는 NULL 로 처리