■ NULL 함수
- DBMS 내 데이터를 가공하여 구축할 때 NULL 값을 효율적으로 처리하는 함수
(단, DBMS별로 지원하는 함수가 상이하므로 본 페이지에서는 MySQL, Oracle에서 사용 가능한 함수만을 정리)
□ 공통
COALESCL(A, B, C, ...)
- A가 NULL 값이면 B, B 또한 NULL 값이면 C... 패턴으로 반환
SELECT
COALESCE('A', 'B', 'C', 'D') AS RESULT1, # 결과: A
COALESCE(NULL, 'B', 'C', 'D') AS RESULT2, # 결과: B
COALESCE(NULL, NULL, 'C', 'D') AS RESULT3, # 결과: C
COALESCE(NULL, NULL, NULL, 'D') AS RESULT4, # 결과: D
COALESCE(NULL, NULL, NULL, NULL) AS RESULT5 # 결과: NULL
FROM
PAYMENT
□ MySQL
IFNULL(A, B)
- A가 NULL 값일 경우, B로 대체하여 반환
SELECT
IFNULL(NAME, '확인불가') AS NAME, #NAME 컬럼이 NULL 값이면 '확인불가' 반환 / 아니면 유지
IFNULL(AGE, '확인불가') AS AGE,
IFNULL(DATE, '확인불가') AS DATE
FROM
PAYMENT
IF(NOT NULL(A), B, C)
- A가 NULL 값이 True인 경우, B를 반환하고 False인 경우, C를 반환
SELECT
#NAME 컬럼이 NULL이면 '확인불가' / 아니며 유지
IF(IS NULL(NAME), '확인불가', NAME) AS NAME
FROM
PAYMENT
□ Oracle
NVL(A, B)
- A가 NULL 값일 경우, B로 대체하여 반환
SELECT
NVL(NAME, '확인불가') AS NAME, #NAME 컬럼이 NULL 값이면 '확인불가' 반환 / 아니면 유지
NVL(AGE, '확인불가') AS AGE,
NVL(DATE, '확인불가') AS DATE
FROM
PAYMENT
NVL2(A, B, C)
- A가 NULL 값이 아니면 B로 반환하고, NULL 값이면 C로 반환
SELECT
NVL2(NAME, NAME, '확인불가') AS NAME, #NAME 컬럼이 NULL 값이 아니면 유지 / 맞으면 '확인불가' 조회
NVL2(AGE, AGE, '확인불가') AS AGE,
NVL2(DATE, DATE, '확인불가') AS DATE
FROM
PAYMENT
NULLIF(A, B)
- A와 B가 같으면 NULL 값으로 반환
SELECT
NULLIF('Hello', 'Hello') AS RESULT1, # 결과: NULL
NULLIF('Oracle' 'Hello') AS RESULT2, # 결과: Oracle
NULLIF(1234, 1234) AS RESULT3, # 결과: NULL
NULLIF(1234, 5678) AS RESULT4, # 결과: 1234
NULLIF(SYSDATE, SYSDATE) AS RESULT5, # 결과: NULL
NULLIF(TO_DATE('2024-11-17', 'YYYY-MM-DD'), SYSDATE) AS RESULT6 # 결과: 2024-11-17 00:00:00
FROM
PAYMENT