MW211 EXIT

devlog
PostgreSQL/除数ゼロエラーとNULL
2013年04月28日
割り算の場合、割る数(分母)を「0」にすることはできない(除数ゼロエラー)。
SQL文でも同じで、「division by zero」エラーが発生する。
┌──────────────────────────────────────┐
│SELECT 6 / 3;                                             →「2」(integer型)│
├──────────────────────────────────────┤
│SELECT 6 / 0;                             →エラー(ERROR:  division by zero)│
└──────────────────────────────────────┘
では、NULLは?
NULLは「0」なのか?分母にとれない?

いやいやそんなことはない。
NULLは何もかもをNULL色に染めてしまうのだ。
┌──────────────────────────────────────┐
│SELECT 6 / NULL;                                       →「NULL」(integer型)│
├──────────────────────────────────────┤
│SELECT NULL / 3;                                       →「NULL」(integer型)│
└──────────────────────────────────────┘
ということで、NULLについては除数ゼロエラーの対策が要らないというお話でした。
#但し、システム毎に仕様があるだろうからそれに合わせるように注意が必要
  例えば、NULLが分母になる場合100%扱いにするとかの、ローカルルールについてだ
分類:PostgreSQL