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를 권장한다.