''(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'
이러한 조건으로