SQL 기본 및 활용
🗄️ SQLSQL 기본★★★★★거의 매회

CASE 와 DECODE — 조건에 따라 값을 바꾸기

CASE 는 위에서부터 맞는 것을 찾아 멈춘다. 그래서 넓은 조건을 위에 두면 아래가 영영 걸리지 않는다.

CASEWHENELSEDECODE

왜 그런지까지

CASE WHEN 조건 THEN 값 ... ELSE 값 END 꼴로 쓴다.

조건을 위에서부터 차례로 보다가 처음 맞는 것에서 멈추므로 순서가 곧 답이 된다. ELSE 를 빼면 아무 조건에도 안 걸린 행은 NULL 이 된다. DECODE 는 오라클 전용으로 '같으냐'만 따질 수 있고, 범위 비교는 못 한다.

돌려 보기

조건 순서를 뒤집으면 결과가 달라진다

헷갈리는 것

CASE vs DECODE

CASE 는 범위 비교(>=, BETWEEN)까지 되는 표준 문법이고, DECODE 는 오라클 전용으로 '같으냐'만 따진다.

ELSE 가 없을 때

어느 조건에도 걸리지 않은 행은 NULL 이 된다. 0 이나 빈 문자열이 아니다.

확인 문제

넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다