반응형
Oracle에서 열이 empty_clob()인지 테스트하려면 어떻게 해야 합니까?
천진난만한 사람FOO = empty_clob()
호환되지 않는 유형에 대해 불만을 제기합니다.저는 구글링을 시도했지만 (다시 한번) Oracle에 대한 도움을 찾는 데 거의 성공하지 못했습니다.감사해요.
길이가 없는 CLOB만 확인하고 싶은 건가요?정확히 당신이 요구하는 것은 아니지만, 기본적으로 같은 것입니까?
select *
from bar
where dbms_lob.getlength(foo) = 0;
다음은 전체 테스트입니다.
SQL> create table bar (foo clob);
Table created.
SQL> insert into bar values (empty_clob());
1 row created.
SQL> select *
2 from bar
3 where dbms_lob.getlength(foo) = 0;
FOO
--------------------------------------------------------------------------------
PL/SQL에서 비교를 시도하는 경우 Igor의 솔루션이 수행하는 것처럼 동일성을 테스트할 수 있습니다.
SQL> ed
Wrote file afiedt.buf
1 DECLARE
2 dummy clob;
3 BEGIN
4 dummy := empty_clob();
5 IF dummy = empty_clob() THEN
6 dbms_output.put_line( 'Dummy is empty' );
7 ELSE
8 dbms_output.put_line( 'Dummy is not empty' );
9 END IF;
10* END;
SQL> /
Dummy is empty
PL/SQL procedure successfully completed.
SQL에서 이 작업을 수행하려면 DBMS_LOB.COMPare 함수를 사용해야 합니다.테이블의 LOB 열은 실제로 LOB 로케이터(즉, 포인터)이므로 LOB가 가리키는 값은 EXPINT_CLOB() 함수에서 반환되는 LOB 로케이터가 가리키는 값과 비교할 수 있어야 합니다.
SQL> desc bar
Name Null? Type
----------------------------------------- -------- ------------------------
FOO CLOB
SQL> insert into bar values ('123');
1 row created.
SQL> insert into bar values( empty_clob() );
1 row created.
SQL> insert into bar values( empty_clob() );
1 row created.
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare( foo, empty_clob() ) = 0
SQL> /
COUNT(*)
----------
2
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare( foo, empty_clob() ) != 0
SQL> /
COUNT(*)
----------
1
초기화 시에는 다음과 같은 기능이 작동해야 합니다.
DECLARE
dummy clob;
dummy2 clob;
BEGIN
dummy := empty_clob();
IF dummy = empty_clob() THEN
dummy2 := dummy;
END IF;
END;
SQLplus에서 빈 CLOBS를 테스트하는 간단한 방법은 테스트를 수행하기 전에 모든 CLOBS를 varchar2(TO_CHAR 함수 사용)로 변환하는 것입니다.
SELECT *
FROM table1
WHERE TO_CHAR(table1.column1) IS NULL
DECLARE
dummy CLOB := 'fxsgf';
dummy1 CLOB;
BEGIN
IF dummy1 = EMPTY_CLOB ()
THEN
DBMS_OUTPUT.put_line ('Dummy1 is empty');
ELSE
DBMS_OUTPUT.put_line ('Dummy1 is not empty');
END IF;
IF dummy = EMPTY_CLOB ()
THEN
DBMS_OUTPUT.put_line ('Dummy is empty');
ELSE
DBMS_OUTPUT.put_line ('Dummy is not empty');
END IF;
END;
언급URL : https://stackoverflow.com/questions/521490/how-do-i-test-if-a-column-equals-empty-clob-in-oracle
반응형
'programing' 카테고리의 다른 글
C/C++ 컴파일러가 컴파일 시 배열의 크기를 알아야 하는 이유는 무엇입니까? (0) | 2023.07.17 |
---|---|
Mongoose와 함께 대량 상승을 시도하고 있습니다.가장 깨끗한 방법은 무엇입니까? (0) | 2023.07.17 |
키 속성이 유형 스크립트에서 이벤트 유형의 일부로 인식되지 않는 이유는 무엇입니까? (0) | 2023.07.17 |
"Fire and Forget" python 비동기/대기 (0) | 2023.07.17 |
새로운 tf.contrib은 어떻습니까?TensorFlow의 요약 요약을 평가하시겠습니까? (0) | 2023.07.17 |