IS NULL, IS NOT NULL

NULL
– DB에서 NULL이 일반적인 값과는 다르게 취급된다.
– 아직 정의되지 않은 값.
– 0(숫자) 또는 공백(문자)과 다르다.
– 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 포함할 수 있다.
– NULL 값을 포함하는 연산의 경우 결과 값도 NULL이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다.
– 결과값을 NULL이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다.
– NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(Zero)으로, 문자 유형 데이터인 경우에는 블랭크보다는 ‘x’ 같은 해당 시스템에서 의미없는 문자로 바꾸는 경우가 많다.

IS NULL

-- NULL인 데이터
SELECT *
FROM test
WHERE score IS NULL;

IS NOT NULL

-- NULL이 아닌 데이터
SELECT *
FROM test
WHERE score IS NOT NULL;

IFNULL

-- NULL이면 0으로 치환.
SELECT IFNULL(score, 0) FROM test;

COALESCE

-- NULL이면 0으로 치환.
SELECT COALESCE(score, 0) FROM test;
IFNULL과 COALESCE 차이.
COALESCE() is in all the major databases, while IFNULL() isn't in SQL Server which uses ISNULL()instead. Performance should be no different. –  Hart CO Nov 12 '14 at 18:56
결과는 같지만. COALESCE가 모든 데이터베이스에서 사용가능하니 COALESCE를 권장한다. 

안녕하세요. 끄적이기를 좋아하는 개발자 이예빈입니다. 매일 일기를 쓰는 것 처럼 블로그를 쓰고 싶어요.
Leave a Reply

Your email address will not be published. Required fields are marked *