NULL値

NULLは、データが存在しない場合や認識不可能な場合を表します。全てのSQLデータベースでNULL値がサポートされます。NULL値を持つフィールドは、ISAMファイルの空白フィールドとは異なります。NULLは、値が不明であることを意味し、特別な処理が必要です。数値カラムで計算を行う場合、1つ以上の値がNULLであれば、計算結果もNULLになります。文字型フィールドでNULL値を使用できる場合、空白フィールドの全てのレコードを選択しても、文字型フィールドにNULL値を持つレコードは選択されません。

NULL値は、インデックス検索には含まれません。NULL値が許可されているカラムにはインデックスを定義しないよう強くお勧めします。

例えば、

SELECT *
FROM Table1
WHERE Fld1>=4 or Fld1<4

というSELECT文によって、Fld1がNULLであるレコードを除く、Table1の全てのレコードが返ります。

NULLは、データベースごとに異なる順序で表示されます。例えば、OracleとMS-SQL Serverで次のSELECT文を実行すると、それぞれ異なる順序のレコードを受け取ります。

SELECT *
FROM Table1
Order by Fld1 ASC

Oracleでは、NULLは、最も高い値としてデータベースに保存されるので、カラムFld1にNULL値を持つレコードは、このSELECT文の最後のレコードとして表示されます。

一方、MS-SQL Serverでは最も低い値としてデータベースに保存されるので、カラムFld1にNULL値を持つレコードは、このSELECT文の最初のレコードとして表示されます。