看來SQLPLUS以一種我並不期待的方式顯示CLOB的空值和空字符串。爲什麼SQLPLUS將空和空CLOB顯示爲空?
在SQLPLUS中嘗試以下操作(我正在使用Oracle 10g服務器)。與CLOB創建一個表,然後將空,空CLOB和我所想的是一個空字符串:
create table tableA (field1 number, field2 clob);
insert into tableA values (1, null);
insert into tableA values (2, empty_clob());
insert into tableA values (3, '');
OK,讓我們做一些查詢,但首先我們需要告訴SQLPLUS顯示空顯然我們:
set null {NULL}
對於下面的查詢,我本來預計只有第1行回來了,但它返回2:
select * from tableA where field2 is null;
field1 field 2
-----------------------
1 {NULL}
3 {NULL}
嗯,所以''
被存儲爲CLOB空?
好吧,所以根據這個結果,我現在期望以下查詢返回所有3行,但僅在第1行和第3行顯示{NULL}
。但是我得到這個結果:
select * from tableA;
field1 field 2
-----------------------
1 {NULL}
2 {NULL}
3 {NULL}
這很混亂。我認爲只有2個空值,儘管我原本預期爲1.那麼這裏發生了什麼? set null
不適用於CLOB,如果是的話,我應該使用什麼?
我實際上試圖解決與空CLOB值不同的問題,但這種令人困惑的行爲讓我跑了一段時間,所以我想在繼續之前理解這一點。
預先感謝
博茲