[Oracle] 조건문 함수 : CASE WHEN THEN / DECODE

수경·2023년 9월 3일
0
post-thumbnail

CASE WHEN THEN

  • 조건문 역할 > 컬럼값 조작
  • 대부분의 절에서 사용 가능하다.
  • 조건을 만족하지 못한면 null을 반환한다(***)
CASE
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ...
    ELSE 기본결과
END
  • 조건1, 조건2 등은 참 또는 거짓을 판별하는 조건식
  • 조건1이 참이면 결과1이 반환되고, 조건2가 참이면 결과2가 반환된다.
  • 만약 어떤 조건도 참이 아니라면 ELSE 절에 지정된 기본결과가 반환된다.
-- m이면 남자, f이면 여자 반환
SELECT 
	LAST||FIRST AS name,
	CASE 
		WHEN GENDER = 'm' THEN '남자'
		WHEN GENDER = 'f' THEN '여자'
	END AS gender
FROM TBLCOMEDIAN ;

-- 체중이 50kg이상 90이하이면 정상체중 그 외이면 주의체중 반환
SELECT 
	LAST||FIRST AS name,
	WEIGHT ,
	CASE 
		WHEN WEIGHT BETWEEN 50 AND 90 THEN '정상체중'
		ELSE '주의체중'
	END AS state
FROM TBLCOMEDIAN ;

DECODE

  • 조건에 따라 값을 변환하거나 선택할 때 사용한다.
  • 못찾으면 null을 반환 > case when 대신 사용하기도 한다.
DECODE(표현식, 값1, 결과1, 값2, 결과2, 기본결과)
  • "표현식"은 비교할 값이나 컬럼
  • "값1"과 "값2"는 비교할 값들
  • "결과1"과 "결과2"는 "표현식"이 각각 "값1" 또는 "값2"와 일치할 때 반환될 결과이다.
  • "기본결과"는 "표현식"이 어떤 값과도 일치하지 않을 때 반환될 결과이다.
-- tblcomedian. 성별 > 남자, 여자로 표현
SELECT
	gender,
    -- 1. case when
	CASE
		WHEN gender = 'm' THEN '남자'
		WHEN gender = 'f' THEN '여자'
	END AS g1,
    -- 2. replace
	REPLACE(replace(gender, 'm', '남자'), 'f','여자') AS g2,
    --3. decode
	decode(gender, 'm', '남자', 'f', '여자') AS g3
FROM tblcomedian;
profile
웹백엔드개발자를 꿈꾸는

0개의 댓글