DataBase/RDB
SQL-CASE 표현식
보라색츄르
2021. 12. 14. 01:36
CASE 표현식을 사용하면 IF THEN ELSE 논리를 평가할 수 있다.
자바에서 WHEN절, IF절과 비슷하다.
위와 같이 TB_PRODUCT 테이블의 데이터를 이용하여 CASE 표현식의 예를 들어보겠다.
1. 단순 CASE표현식
1-1. CASE WHEN THEN ELSE END문
설명 : PRODUCT_NAME이 사과라면 RED, 사과가 아니라면 NOT RED를 출력해라
SELECT PRODUCT_NAME
, CASE PRODUCT_NAME
WHEN '사과' THEN 'RED'
ELSE 'NOT RED'
END AS COLOR
FROM TB_PRODUCT;
<결과>
1-2. CASE WHEN THEN END문
SELECT PRODUCT_NAME
, CASE PRODUCT_NAME
WHEN '사과' THEN 'RED'
END AS COLOR
FROM TB_PRODUCT;
<결과 : 일치하는 WHEN절이 없는 경우 NULL이 반환된다.>
1-3. 데이터 타입이 동일하지 않으면?
SELECT PRODUCT_PRICE
, CASE PRODUCT_PRICE
WHEN '500' THEN 5
END AS PRODUCT_PRICE_SIMPLE
FROM TB_PRODUCT;
<결과 : 에러발생>
<올바른 식>
SELECT PRODUCT_PRICE
, CASE PRODUCT_PRICE
WHEN 500 THEN '5'
END AS PRODUCT_PRICE_SIMPLE
FROM TB_PRODUCT;
<결과>
2. 검색 CASE 표현식
2-1. BETWEEN을 활용한 검색 CASE표현식
SELECT PRODUCT_PRICE
, CASE
WHEN PRODUCT_PRICE BETWEEN 100 AND 1000 THEN 1
WHEN PRODUCT_PRICE BETWEEN 1000 AND 2000 THEN 2
WHEN PRODUCT_PRICE BETWEEN 2000 AND 3000 THEN 3
ELSE 0
END AS PRODUCT_PRICE_SIMPLE
FROM TB_PRODUCT;
<결과 : 만약 ELSE가 없다면 위의 글과 마찬가지로 WHEN절에 해당하지 않는 조건은 NULL이 반환된다.>
(참고 : BETWEEN이란? 범위를 평가하는 조건문이다.)
2-2. 등가 부호 활용
SELECT PRODUCT_PRICE
, CASE
WHEN PRODUCT_PRICE >=10000 THEN 10
WHEN PRODUCT_PRICE >=5000 THEN 5
WHEN PRODUCT_PRICE >=1000 THEN 1
END AS PRODUCT_PRICE_SIMPLE
FROM TB_PRODUCT;
<결과>