Thursday, August 31, 2006

Oracle の空文字列は NULL と見なされてしまう件

Oracle の VARCHAR2 型には問題があって、空文字列を NULL 扱いしてしまう。たとえば、


SQL> create table hoge (
2 str varchar2(88)
3 );

SQL> insert into hoge values ('');

1 row created.

SQL> select * from hoge where str = '';

no rows selected

SQL> select * from hoge where str is null;

STR
--------------------------------------------------------------------------------


SQL> create table boke (
2 str varchar2(22) not null);

Table created.

SQL> insert into hoge values ('');
insert into hoge values ('')
*
ERROR at line 1:
ORA-01400: ("TOMITA"."BOKE"."STR")にはNULLは挿入できません。



のようになってしまうのだ。これは、古くからあるバグのようで、修正するとアナウンスはされていたようだが、いまだになおっていない。

No comments: