본문 바로가기

Dev/SQL

[ORACLE] 오라클의 NULL 처리

728x90
  • IS NULL, IS NOT NULL
SELECT * FROM TABLE_NAME
WHERE COL_NAME IS NULL

 

NULL인지 아닌지 처리

  • NVL, NVL2
SELECT NVL(1, 2), NVL(COL_NAME, 'a')
FROM TABLE_NAME;

 

COL_NAME이 NULL이면 a가 나온다.

SELECT 
NVL2('A', 'B', 'C')   // C
     , NVL2(NULL, 'B', 'C')  // 2
     , NVL2(1, 2, 3)         // 3
FROM TABLE_NAME;

 

첫번째 파라미터가 NULL이면 3번째 파라미터가, 아니면 2번째 파라미터가 나온다.

  • NULLIF
SELECT NULLIF('A', 'B') // A
     , NULLIF('A', 'A') // NULL
     , NULLIF(2, 3)     // 2
     , NULLIF(2, 2)     // NULL
FROM DUAL;

 

param1, param2 가 같으면 null, 아니면 param1이 반환된다.

  • COALESCE
SELECT COALESCE('A', 'B', 'C')    // A
     , COALESCE(NULL, 'B', 'C')   // B
     , COALESCE(NULL, NULL, 'C')  // C
     , COALESCE(NULL, 'B', NULL)  // B
FROM DUAL;

 

파라미터에서 NULL이 아닌 첫번째 값이 나온다. 단, 파라미터들의 형태가 같아야한다. 

  • DECODE

 

  • CASE
SELECT CASE NVL(NULL, 'C') 
            WHEN 'A' THEN 'A' 
            WHEN 'B' THEN 'B'
            WHEN 'C' THEN 'C'
       ELSE 'NOT FOUND' END // C
FROM DUAL;

 

케이스문으로 처리하는 방법, 만약 ELSE가 없다면 NULL을 반환한다.

 

출처: https://developer-talk.tistory.com/257

'Dev > SQL' 카테고리의 다른 글

SQL - 날짜 출력 방법  (0) 2024.03.02