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 하면 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
널값과 빈값의 데이터를 모두 추출해야 된다면 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'
- 강좌 URL : http://www.gurubee.net/lecture/3810
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.