3장에서 생성했던 emp03 테이블 기억나시죠? 이 테이블의 age 컬럼에는 사원의 나이가 들어가 있습니다. 쿼리 6-8은 CASE 표현식을 사용해 age 컬럼 값에 따라 10대에서 50대까지 연령별로 구분해 그 결과를 반환합니다. age 값을 WHEN 절에서 BETWEEN~AND 조건식을 사용해 비교했고, 조건식이 참인 경우 각각 ‘10대’에서 ‘50대’까지 값을 반환합니다. 60세 이상인 경우는 WHEN 절 조건식을 만족하지 않고 ELSE 절로 넘어가 ‘60대 이상’을 반환합니다. 이 쿼리의 결과를 볼까요?
▲ 그림 6-7 쿼리 6-8을 실행한 결과
원하는 대로 결과가 조회됐군요. 이런 식의 비교는 단순형 CASE 표현식으로는 만들 수 없죠. 또한 BETWEEN~AND 구문 대신 비교 연산자인 >=와 <=를 사용해도 동일한 결과가 나옵니다.
앞에서 DECODE 함수는 CASE 표현식과 같은 기능을 한다고 했는데요. 정확히 말하면 DECODE 함수는 단순형 CASE 표현식과 같은 기능을 합니다. 검색형 CASE 표현식은 DECODE 함수로 대체할 수 없습니다. CASE 표현식은 코드가 길어지는 단점이 있지만, 가독성도 좋고 다양한 조건식을 사용할 수 있다는 점에서 그 활용도가 매우 큽니다.
이번 장에서는 SQL 연산자와 함수 그리고 CASE 표현식에 대해 배웠습니다. 이론과 기능 위주로 설명하다 보니 알 것 같긴 한데 확실히 알고 있다고 단언하기는 어려운 상태일 것입니다. SQL 문법에 대한 내용을 숙지하고 다양한 형태로 많이 사용하다 보면 어느 순간 자유자재로 SQL 문장을 작성하는 자신의 모습을 발견하게 될 거예요. 이어지는 장에서 다양한 형태로 문장을 작성해 볼 기회가 있으니 조급해 말고 지금까지 배운 내용을 여러 번 읽어 보세요.