NULLと''
NULLと''は同じ。だから↓は通らない。
SQL> CREATE TABLE hoge (hoge VARCHAR2(10) NOT NULL); 表が作成されました。 SQL> INSERT INTO hoge VALUES('') * 行1でエラーが発生しました。: ORA-01400: ("TEST"."HOGE"."HOGE")にはNULLは挿入できません。
http://biz.rivus.jp/words/null.html
長さ 0 の文字列とNULLは同じということらしい。なので以下のSQLは1行ヒットして1が返る。
select 1 from dual where '' is null;