Java에서 CLOB 타입을 사용하는 경우 EMPTY_CLOB 함수로 초기화하는 것이 일반적이다. EMPTY_CLOB 함수로 초기화된 CLOB 타입의 동작을 살펴보자.
테스트를 위해 아래와 같이 테이블을 생성하자.
-- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 (c1 NUMBER, c2 CLOB); INSERT INTO t1 VALUES (1, NULL); INSERT INTO t1 VALUES (2, EMPTY_CLOB ()); INSERT INTO t1 VALUES (3, 'X'); COMMIT;
아래는 t1 테이블을 조회한 결과다. c1이 1, 2인 행의 c2 값이 없는 것으로 표시된다.
-- 2 SELECT * FROM t1; C1 C2 -- -- 1 2 3 X 3 행이 선택되었습니다.
--------------------------------------------------------- | C1 | 상태 | 설명 | --------------------------------------------------------- | 1 | null | 로케이터(locator)와 값(value)이 없음 | | 2 | empty | 로케이터는 존재하지만 값이 없음 | | 3 | populated | 로케이터와 값이 존재함 | ---------------------------------------------------------
IS NULL 조건으로 조회하면 c1이 1인 행(상태가 null인 행)이 반환된다. EMPTY_CLOB 함수로 초기화된 값은 반환되지 않는다.
-- 3 SELECT * FROM t1 WHERE c2 IS NULL; C1 C2 -- -- 1 1개의 행이 선택되었습니다.
IS NOT NULL 조건으로 조회하면 c1이 2, 3인 행(상태가 empty나 populated인 행)이 반환된다.
-- 4 SELECT * FROM t1 WHERE c2 IS NOT NULL; C1 C2 -- -- 2 3 X 2 행이 선택되었습니다.
EMPTY_CLOB 함수로 초기화된 행(상태가 empty인 행)을 조회하기 위해서는 아래와 같이 LENGTH 함수를 사용하면 된다.
-- 5 SELECT * FROM t1 WHERE LENGTH (c2) = 0; C1 C2 -- -- 2 1개의 행이 선택되었습니다.
상태가 null이나 empty인 행을 조회하기 위해서는 아래와 같이 NULLIF 함수를 사용하며 된다.
-- 6 SELECT * FROM t1 WHERE NULLIF (LENGTH (c2), 0) IS NULL; C1 C2 -- -- 1 2 2 행이 선택되었습니다.
'Oracle > Administration' 카테고리의 다른 글
인덱스 브랜치 블록 (0) | 2018.10.09 |
---|---|
Online Statistics Gathering for Bulk Loads (0) | 2018.09.29 |
CLOB #3 - LONGCHUNKSIZE (0) | 2018.06.23 |
CLOB #2 - NVL 함수 (0) | 2018.06.23 |
CLOB #1 - BASICFILE vs SECUREFILE (0) | 2018.06.23 |