2007年6月13日水曜日

Oracle(10gR2)は空文字とNULLが同じ!?

スズキです。

なんと、Oracle(10gR2)は空文字とNULLを区別しないようです、

なので、こんなテーブルに、
--------
CREATE TABLE ZIP (
  ZIP_CD CHAR(8) NOT NULL,
  ZIP_PNAME VARCHAR(64) NOT NULL,
  ZIP_CNAME VARCHAR(64) NOT NULL,
  ZIP_TNAME VARCHAR(64) NOT NULL
);
--------

こんなインサート文投げると、
--------
insert into zip values('060-0000','北海道','札幌市中央区','');
--------

ZIP_TNAMEにNULLは挿入できないと起こられます。

なので、空文字''はNULLとして扱われるので、
空文字''という概念は存在しないようです。
(where ZIP_TNAME = '' だと、何も検索されない)

ということで、Oracle(10gR2)ではsuz-labの
「String系カラムは必ず"NOT NULL"」
ルールは適用できないことが判明しました。

--
blog: http://suz-lab.blogspot.com/

0 コメント: