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

CASE 다른 형태


다음 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 로 처리