ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL CASE
    Database 2021. 3. 17. 14:58
    728x90

    SQL CASE문을 이용해 데이터를 변환 할 수 있다.

    NULL 값을 0으로 변환하여 출력하고 싶은 경우

    1, 2같은 수치형 데이터를 남자, 여자와 같은 문자열로 변환하여 출력하고 싶은 경우 등에 사용하며, 굉장히 폭 넓게 사용되는 문법 중 하나이다.

     

    CASE문

    SELECT, WHERE, ORDER BY 등 모든 구에서 사용이 가능하다.

    단순 CASE문검색 CASE문 이렇게 2가지 문법으로 나뉜다.

    ELSE를 생략하지 않는 것을 권장한다.

    수치형 데이터 => 문자형 데이터로 변환하는 것을 디코드

    문자형 데이터 => 수치형 데이터 변환하는 것을 인코드라 부른다.


    단순 CASE문

    단순 CASE문의 경우 = 연산자를 이용해 값을 비교하기 때문에 NULL값을 비교할 수 없다!

    (NULL은 Is 연산자로 비교 가능하기 때문)

    a = 1

    a = 2

    a = NULL

    CASE a
      WHEN 1 THEN '남자'
      WHEN 2 THEN '여자'
      ELSE '미지정'
    
    CASE 식1
      WHEN 식2 THEN 식3
      WHEN 식4 THEN 식5
      ELSE 식6

    검색 CASE문

    CASE
      WHEN a=1 THEN '남자'
      WHEN a=2 THEN '여자'
      WHEN a IS NULL THEN '데이터없음'
      ELSE '미지정'
      
     CASE
      WHEN 조건식1 THEN 식1
      WHEN 조건식2 THEN 식2
      ELSE 식3

    CASE문 해석하기

    CASE 식1
      WHEN 식2 THEN 식3
      WHEN 식4 THEN 식5
      WHEN 식6 THEN 식6
      ELSE 식7

    식1의 값이 식2와 같은지 비교 =>

    같은 경우        => 식3의 값이 CASE 전체문의 결괏값이 된다.

    같지 않은 경우 => 식1으 값과 식4가 같은지 비교하고 위 과정을 반복한다.

    일치하는 경우가 없을 경우 식7 값이 CASE 전체문의 결괏값이 된다.


    NULL 값을 0으로 반환

    a값이 NULL이면 0을 반환하고 그렇지 않으면 a를 반환하다.

    SELECT a, CASE WHEN a IS NULL THEN 0 ELSE a as(생략가능) RESULT FROM PRODUCTS;

     

    COALESCE 함수

    사실 NULL값을 변환하는 하는 경우 coalesce함수를 사용하는게 편리하다.

    여러 개의 인수를 지정할 수 있으며, 주어진 인수 가운데 NULL이 아닌 값에 대해서는 가장 먼저 지정된 인수의 값(a)를 반환한다.

    SELECT a, COALESCE(a, 0) FROM PRODUCTS:

     

    출처 :

    SQL 첫걸음/ 아사이 아츠시 지음/ 한빛미디어

    728x90

    'Database' 카테고리의 다른 글

    SQL DELETE(행 삭제하기)  (2) 2021.03.25
    SQL INSERT(행 추가하기)  (0) 2021.03.25
    SQL 날짜연산  (0) 2021.03.17
    SQL 문자열 연산  (0) 2021.03.08
    SQL 연산  (0) 2021.03.02
Designed by Tistory.