본문 바로가기

프로그래밍 언어/SQL

[MySQL] 데이터 변환(CASE,WHEN,THEN,ELSE,END), 검색/단순 CASE, 디코드/인코드

2023-03-14 TIL 15강 CASE 문으로 데이터 변환하기

 

검색 CASE : CASE WHEN 조건식 THEN 식 ...

  • RDBMS에 갖추어져 있는 기존의 연산자나 함수만으로는 처리할 수 없는 것을 처리해줌
  • 예를 들면, NULL값으로 연산한 결과는 모두 NULL이 되지만, NULL 값을 0으로 계산하고 싶은 경우
select a, case when a is null then 0 else a end "a(null=0)" from sample37;

 

select a as '코드',
    -> case
    ->  when a = 1 then '남자'
    ->  when a = 2 then '여자'
    ->  else '미지정'
    -> end as '성별' from sample37;

검색 CASE

 

COALESCE : NULL값을 0으로 반환하는 함수

select a, coalesce(a, 0) from sample37;

 

디코드와 인코드

  • 디코드 : 문자화(남자, 여자)
  • 인코드 : 수치화(1, 2)

 

단순 CASE : CASE 식 WHEN 식 THEN 식 ...

  • 단순 CASE는 CASE 뒤에 식을 기술하고 WHEN 뒤에 (조건식이 아닌) 식을 기술한다
  • CASE문의 ELSE는 생략하지 않고 지정하자
select a as '코드',
    -> case a
    ->  when 1 then '남자'
    ->  when 2 then '여자'
    ->  else '미지정'
    -> end as '성별' from sample37;

단순 CASE

 

WHEN에 NULL 지정하기

  • NULL은 단순 CASE문으로 NULL값을 비교할 수 없다
  • 검색 CASE문으로 NULL을 판정한다
select a as '코드',
    -> case
    ->  when a = 1 then '남자'
    ->  when a = 2 then '여자'
    ->  when a is null then '데이터 없음'
    -> 	else '미지정'
    -> end as '성별(null=데이터 없음)' from sample37;