반응형
- 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은 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
'Database > MySQL' 카테고리의 다른 글
[Programming][MySQL] 문자열 가공하기(Feat. 카카오 주가 데이터) (0) | 2021.07.26 |
---|---|
[Programming][MySQL] IF/ CASE 조건 함수(Feat. 카카오 주가 데이터) (0) | 2021.07.26 |
[Programming][MySQL] 연산을 할 수 있는 다양한 함수(Feat. 카카오 주가 데이터) (0) | 2021.07.25 |
[Programming][MySQL] ORDER BY / GROUP BY / LIMIT(Feat. 카카오 주가 데이터) (0) | 2021.07.24 |
[Programming][MySQL] DATE (날짜/시간) 함수(Feat. 카카오 주가 데이터) (0) | 2021.07.24 |
댓글