''(BLANK) 와 NULL 데이터 처리하기

''(BLANK)은NULL 일까?


  1  WITH T AS (
  2  SELECT NULL AS C1 FROM DUAL
  3  UNION ALL
  4  SELECT ' ' FROM DUAL
  5  )
  6  SELECT 'NULL', COUNT(*)
  7  FROM T
  8  WHERE C1 IS NULL
  9  UNION ALL
 10  SELECT 'NOT NULL',COUNT(*)
 11  FROM T
 12* WHERE C1 IS NOT NULL
SQL> /

'NULL'     COUNT(*)
-------- ----------
NULL              1
NOT NULL          1


TRIM & NVL 처리


-- 빈칸에 TRIM 하면 NULL으로 인신됨.
SQL> WITH T AS (
  2  SELECT NULL AS C1 FROM DUAL
  3  UNION ALL
  4  SELECT ' ' FROM DUAL
  5  )
  6  SELECT COUNT(*)
  7  FROM T
  8  WHERE NVL(TRIM(C1),'ISNULL') = 'ISNULL' ;

  COUNT(*)
----------
         2

''와 NULL 데이터 처리시 성능 문제.


널값과 빈값의 데이터를 모두 추출해야 된다면 Full table scan 으로 진행된다.
자주 사용하게 된다면 아래와 같이 FBI 추가 후 Where 변경을 검토할 수 있다.
...
WHERE (
RESULT = ' '
OR RESULT IS NULL
)

- 신규 INDEX 생성
CREATE INDEX ... ( NVL(TRIM(RESULT),'ISNULL') ) ;

- 변경 WHERE CLAUSE
WHERE NVL(TRIM(RESULT),'ISNULL') = 'ISNULL'



이러한 조건으로