[SQL] 15. CASE 문으로 데이터 변환하기

uuuu.jini·2023년 1월 26일
0

SQL 첫걸음

목록 보기
15/36
post-thumbnail

CASE 문을 이용해 데이터를 변환 할 수 있다. 임의의 조건에 따라 독자적으로 변환 처리를 지정해 데이터를 변환하고 싶은 경우 CASE 문을 이용한다.

1. CASE 문


CASE WHEN 조건식1 THEN1
 [WHEN 조건식2 THEN2]
 [ELSE3]
END
  • WHEN 절에는 참과 거짓을 반환하는 조건식 기술
  • 참이 되는 경우 THEN 절 수행
  • 가장 먼저 조건을 만족한 WHEN 절과 대응되는 THEN 절 식의 처리 결과를 반환
  • 어느 조건도 만족하지 못한 경우 ELSE 절 식 채택 (생략시 ELSE NULL)

CASE로 NULL 값을 0으로 변환
SELECT a, CASE WHEN a IS NULL THEN 0 ELSE a END "a(null=0)" FROM sample37;

- COALESCE

SELECT a, COALESCE(a,0) FROM sample37;

주어진 인수 중 NULL이 아닌 값에 대해서는 가장 먼저 지정된 인수의 값을 반환한다.

2. 또 하나의 CASE 문


숫자로 이루어진 코드를 알아보기 쉽게 문자열로 변환하고 싶은 경우 CASE 문을 많이 사용한다.

WHEN a=1 THEN '남자'
WHEN a=2 THEN '여자'

CASE 문에는 2개의 구문이 있다!

  • 검색 CASE
  • 단순 CASE: CASE 식 WHEN 식 THEN 식...
CASE1
 WHEN2 THEN3
 [WHEN4 THEN5]
 [ELSE6]
END

식1의 값이 식2의 값과 동일한지 비교 -> 값이 같아면 식3의 값이 CASE 문 전체의 결과값으로 반환

SELECT a AS '코드',
CASE a
	WHEN 1 THEN '남자'
    WHEN 2 THEN '여자'
    ELSE '미지정'
END AS '성별' FROM sample37;

3. CASE를 사용할 경우 주의사항


CASE 문은 WHERE구의 조건식 일부, ORDER BY, SELECT 등에서 사용이 가능하다.

- ELSE 생략

ELSE NULL , 대응하는 WHEN이 하나도 없으면 ELSE 절이 사용되며 NULL이 반환된다.

ELSE는 생략하지 않는 편이 낫다!

- WHEN에 NULL 지정하기

단순 CASE에서는 각 조건이 =로 비교를 지정하므로 NULL 값의 비교가 정상적으로 작동하지 않는다. 즉, NULL 값인지 아닌지를 판정하기 위해 IS NULL을 사용한 검색 CASE문을 사용해야 한다.

profile
멋쟁이 토마토

0개의 댓글