less than 1 minute read

NULL조회하기

IS NULL
SELECT * FROM shool.member WHERE height IS NULL;

height의 데이터가 NULL인 row만 조회한다.

SELECT * FROM shool.member WHERE height IS NOT NULL;

height의 데이터가 NULL이 아닌 row만 조회한다.

“IS NULL”을 사용하는 이유는 “= NULL”은 절대 True일 수 없기 때문이다.
NULL은 어떤 값이 아니기 때문에 어떤 값과 비교할 수 없다.
그리고 NULL에는 어떤 연산을 하든 결국 NULL이다.

COALESCE

COALESCE는 해당 컬럼을 조회하면서 데이터가 NULL이 아니라면 그 값을 출력하고, NULL이라면 대체할 문자가 대신 출력된다.

COALESCE(컬럼, '대체문자')
SELECT COALESCE(height, '값이 없음') FROM school.member;

height의 값이 존재한다면 그 값이 출력될 것이고, 값이 없다면 “값이 없음”이 출력된다.

인자를 더 넣을 수 도 있다.

SELECT COALESCE(height, age, '값이 없음') FROM school.member;

height가 NULL이면 age를 출력하고, age도 NULL이라면 “값이 없음”을 출력한다.

IFNULL

IFNULL은 COALESCE와 동일한 기능을한다.

IFNULL(컬럼, '대체문자')
SELECT IFNULL(height, '값이 없음') FROM school.member;

COALESCE와의 차이점은 COALESCE는 여러개의 인자를 넣을 수 있지만, INFULL은 두개만 넣을 수 있다.
COALESCE는 표준SQL함수고, IFNULL은 MYSQL에만 있는 함수이므로 더 유연하고 표준함수인 COALESCE를 쓰는게 좋다.

Tags:

Categories:

Updated:

Leave a comment