SQLPLUSは、私が予期していなかった方法でCLOBのnullと空の文字列を表示しているようです。
SQLPLUSで次のことを試してください(私はOracle 10g Serverを使用しています)。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, '');
OK、いくつかのクエリを実行しましょう。ただし、最初にSQLPLUSにnullを明確に表示するように指示する必要があります。
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}
これは紛らわしいです。当初は1を期待していましたが、nullは2つしかないと思いました。では、ここで何が起こっているのでしょうか。CLOBでは機能しませset null
ん。機能する場合は、代わりに何を使用する必要がありますか?
私は実際にnullCLOB値で別の問題を解決しようとしていますが、この紛らわしい動作により、しばらくの間リングを実行していたので、続行する前にこれを理解したいと思います。
前もって感謝します
ボズ