Search

NULL 함수(Null Function)

대분류
DB
소분류
MySQL
수준
심화
태그
ISNULL
IFNULL
NULLIF
COALESCE
최종 편집 일시
2024/10/27 15:23
생성 일시
2024/09/29 03:11
14 more properties

ISNULL()

expression이 null이면 1을 반환하고, null이 아니면 0을 반환
ISNULL(expression)
SQL
복사
예시
SELECT ISNULL(NULL) AS result1 , ISNULL(123) AS result2;
SQL
복사
result1
result2
1
0
NULL 값은 ISNULL()을 통해 1을 반환한다.
123은 NULL이 아니므로 0을 반환한다.

IFNULL()

expression이 null이면 alt_value를 반환하고, null이 아니면 expression을 반환
IFNULL(expression, alt_value)
SQL
복사
예시
SELECT IFNULL(NULL, '대체 값') AS result1 , IFNULL(123, '대체 값') AS result2;
SQL
복사
result1
result2
대체 값
123
NULL은 대체 값 '대체 값'으로 반환된다.
123은 NULL이 아니므로 그대로 반환된다.

NULLIF()

두 표현식을 비교하여 같으면 null을 반환하고, 같지 않으면 expr1을 반환
NULLIF(expr1, expr2)
SQL
복사
예시:
SELECT NULLIF(123, 123) AS result1 , NULLIF(123, 456) AS result2;
SQL
복사
result1
result2
NULL
123
123123이 같으므로 NULL을 반환한다.
123456이 다르므로 첫 번째 값인 123을 반환한다.

COALESCE()

col 목록에서 null이 아닌 첫 번째 값을 반환
COALESCE(col1, col2, ...., col_n)
SQL
복사
NULL 처리: COALESCE()는 여러 열을 한 번에 처리할 수 있으며, 열 중 하나라도 값이 있으면 그 값을 반환한다. 따라서 NULL 값을 기본값이나 다른 열의 값으로 대체하는 데 적합하다.
다중 인수: 인수는 여러 개일 수 있으며, 왼쪽에서 오른쪽으로 순차적으로 NULL이 아닌 값을 찾는다.
예제
employees 테이블
emp_id
name
phone
mobile
1
John Doe
NULL
010-1234-5678
2
Jane Smith
02-555-1234
NULL
3
Bill Gates
NULL
NULL
전화번호(phone)와 휴대폰 번호(mobile) 중 NULL이 아닌 값을 선택하는 쿼리
SELECT emp_id , name , COALESCE(phone, mobile, '연락처 없음') AS contact FROM employees;
SQL
복사
결과값
emp_id
name
contact
1
John Doe
010-1234-5678
2
Jane Smith
02-555-1234
3
Bill Gates
연락처 없음
첫 번째 행에서는 phone 값이 NULL이기 때문에 mobile 값을 반환한다.
두 번째 행에서는 phone 값이 존재하므로 그 값을 반환한다.
세 번째 행에서는 phonemobile 모두 NULL이기 때문에 '연락처 없음'이라는 기본값을 반환한다.