似乎 SQLPLUS 以一种我没有预料到的方式显示 CLOB 的空值和空字符串。
在 SQLPLUS 中尝试以下操作(我使用的是 Oracle 10g 服务器)。创建一个带有 CLOB 的表,并插入 null、空 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, '');
好的,让我们做一些查询,但首先我们需要告诉 SQLPLUS 为我们清楚地显示空值:
set null {NULL}
对于以下查询,我预计只返回第 1 行,但它返回 2:
select * from tableA where field2 is null;
field1 field 2
-----------------------
1 {NULL}
3 {NULL}
嗯,所以''
在 CLOB 中存储为 null 吗?
好的,因此基于该结果,我现在希望以下查询返回所有 3 行,但仅显示{NULL}
在第 1 行和第 3 行中。但是我得到了这个结果:
select * from tableA;
field1 field 2
-----------------------
1 {NULL}
2 {NULL}
3 {NULL}
这令人困惑。我以为只有 2 个空值,尽管我最初预计是 1 个。那么这里发生了什么?set null
不适用于 CLOB,如果可以,我应该改用什么?
我实际上是在尝试用空 CLOB 值解决一个不同的问题,但是这种令人困惑的行为让我运行了一段时间的环,所以我想在继续之前了解这一点。
提前致谢
博兹