投稿者 るきお  (社会人) 投稿日時 2009/2/9 06:45:54
こんにちは。

>皆さんはnot nullを指定しないことってありますか?
はい。あります。
つまり、NULL許可の列を作るということですよね。

>理由としては、プログラムでの扱いが面倒な点です。
>例えば、TextBoxに表示させる場合でも一度、DBNULLかを確認しなければならない、また、where条件も>通常はカラム名=値で絞込みを行えますが、NULLの場合はis nullに変更しなければならない等です。
Nullと空文字や0を区別する必要がないのでしたら、おっしゃるようにプログラムの扱いが面倒になるうえ、Nullと空文字・0の意味的な違いについても混乱を招くのでNullを不許可にしてしまってよいと思います。

しかし、仕様上やはりNullを許可した方が良い場合も少なからずあり結局Null許可を選択することもしばしばです。
たとえば、金額を入力しないで保存した場合と金額に0を入力して保存した場合を考えると、金額が未入力かどうか区別するためにはやはりNullを設定するのが一番素直に思えます。(区別する必要がなければNot Nullにして0を放り込むかもしれません)。

でも、刈谷勇さんのNullは面倒論には私も賛成です。Where句で = ではなく IS を使うというのは何とかしてほしかったと思いますし、Order Byで並び変えたときにNullが上にくるとか下にくるとかの既定地がSQL ServerとOracleで異なっていて苦労した記憶もあります。
意味的にはNullの存在は許容できるのですが、各種Null周りの仕様をもうちょっと使いやすくしてほしかったです。