CASE 문으로 데이터 변환하기

Hyun-jin Won·2021년 10월 10일
0

MySQL로 SQL 시작하기

목록 보기
13/24

특정 데이터로 변환하고 싶다.

데이터는 여러가지 방면으로 사용됩니다.
많은 어플리케이션, 서비스에서 데이터를 통해서 연산을 통해 사용자에게 전달합니다. 하지만 해당 데이터를 항상 같은 방식으로 이용할 것이라는 보장이 없습니다. 만약 남여의 데이터를 각각 다른 국가에서 사용한다면? 공통적으로 영문이나 true false로 저장할 수도 있지만 이를 해당 국가의 언어에 맞게 변경하여 넘기는 방법도 존재할 것입니다.

CASE 문은 이러한 상황에 해결책이 될 것 입니다

CASE

CASE WHEN 조건식 THEN1
 [WHEN 조건식2 THEN2...]
 [ELSE3]
END

해당 연산자는 우리가 알고있는 SWITCH CASE문과 동일합니다.
WHEN에 조건을 쓰고, 해당 조건식이 일치하면 옆의 식에 맞추어 데이터를 교채하는 방식으로 진행하며, default는 ELSE 문이 대체합니다.

COALESCE

NULL값은 상당히 골치 아픈 값입니다. 단순한 연산으로 사용하기에는 '값 자체가 없는' 타입이기 때문에 이를 사용하기에도, 단순히 NULL값을 비교하기에도 코드가 길어지고 쓸데없는 반복검사 연산이 들어가게 됩니다.

COALESCE는 이러한 문제를 해결해줍니다.
해당식은 2개의 파라매터를 넣어, 만약 첫번째 파라매터 값이 NULL이 아니라면 그 값을 그대로, 만약 그렇지 않다면 2번째에 넣은 default값을 반환합니다.

COALESCE(a, def);

ELSE문을 함부로 생략하지 말자

CASE문은 ELSE를 생략할 수 있으나, 말그대로 생략하면 default로 ELSE시 NULL를 반환하게 된다. 해당 내용은 공식 문서에도 기록되어있는 사양이다. 이러한 경우는 실제 가공한 데이터에 혼동이 일어날 수 있음으로 주의해야 한다.

profile
삽질을 주체하지 못하는 잉간

0개의 댓글