본문 바로가기
Database/MySQL

[Programming][MySQL] NULL 값 다루기(Feat. 카카오 주가 데이터)

by LydiaRyu 2021. 7. 25.
반응형

 

  • NULL이란?

NULL은 0 값이 아니다. 어떠한 숫자가 아닌 값이 없다, 값이 존재하지 않는다는 의미이다.

NULL + 1 도 NULL이고, NULL * 100도 NULL이다. 즉, NULL에 어떠한 연산을 해도 NULL 값이 나온다. (연산 불가)

 

NULL 값을 다루는 표현들을 해보기 위해 기존에 작성하던 kakao 데이터에서 NULL 값들을 임의로 가공했다.

 

 

1. NULL 값 조회하기

-- NULL 값 조회
SELECT * FROM kakao_null
WHERE month IS NULL;

-- NULL이 아닌 값 조회
SELECT * FROM kakao_null
WHERE month IS NOT NULL;

왼쪽: IS NULL / 오른쪽: IS NOT NULL

 

  • IS NULL은 NULL 값이 있는 열(Column)을 조회하라는 의미이다. month에 NULL이 있는 행을 조회했더니 왼쪽과 같은 결과가 나왔다. 
  • IS NOT NULL은 NULL이 아닌 값들만 조회하는 함수이다. 오른쪽에서 month 열(Column)은 NULL이 없는 행들이 출력되었다. 

 

2. NULL 값 변환하기

SELECT COALESCE(month, '---'),
       COALESCE(high, '*****')
FROM kakao_null;

 

  • COALESCE는 NULL 값 대신 대체할 값을 지정하는 함수이다. COALESCE(NULL 값이 있는 열, 변환하고 싶은 값)으로 설정하면 된다.

 

SELECT COALESCE(month, SUBSTR(date, 6, 2), '---'), date
FROM kakao_null;

 

  • COALESCE는 다른 열을 가공한 값으로 대체할 수도 있다. COALESCE(NULL이 있는 열, 가공해서 대체할 열, 두열 모두 NULL일 때 값)으로 표현할 수 있다. month 열이 NULL이라면, date에서 월을 가지고 오기 위해서 SUBSTR을 사용하여 date의 월 부분만 가지고 오도록 값을 만들었다. 

 

SELECT IFNULL(high, '####')
FROM kakao_null;

 

  • IFNULL 함수로도 NULL 값을 변환할 수 있다. IFNULL(NULL 값을 포함한 열, 대체할 값)으로 조회할 수 있다. 결과를 보니, 위의 쿼리와 같이 high의 NULL 값이 ####로 변경되었다. 
728x90

댓글