NULL 値

各行において、意味のある値が一部の列にはない場合があります。DB2® は、特殊な値の標識 (NULL 値) を使用して不明な値または欠落した値を表します。NULL 値とは一種の特殊な値であり、DB2 はデータがないことを意味しているものと解釈します。

何も指定しないと、DB2 はどの列にも NULL 値が含まれていることを許可します。ユーザーは、列に対して値を入れずに、表に行を作成できます。

NOT NULL 文節を使用すると、列に NULL 値があることを許可しません。 主キーは NOT NULL として定義する必要があります。

汎用プログラミング・インターフェース情報の開始
例: 以下の DEPT 表の表定義では、NULL 値を使用可能な場合を指定しています。NULL を使用できるのは、以下の例の場合は MGRNO 列に対してだけである点に注意してください。
CREATE TABLE DEPT
      (DEPTNO    CHAR(3)           NOT NULL,
       DEPTNAME  VARCHAR(36)       NOT NULL,
       MGRNO     CHAR(6)                   ,
       ADMRDEPT  CHAR(3)           NOT NULL,
       PRIMARY KEY (DEPTNO)                )
  IN MYDB.MYTS;
汎用プログラミング・インターフェース情報の終了

特定の列にある不明値に対して NULL を許可するかどうかを決める前に、照会の結果に NULL がどのような影響を及ぼすかに注意する必要があります (以下を参照)。

  • アプリケーション・プログラムでのヌル

    NULL を使用すると、SQL ステートメント内のどの条件 (特別な IS NULL 述部を除く) も満足させることができません。DB2 は、非ヌル値とは異なる方法で NULL 値をソートします。NULL 値は、他の値のようには扱われません。例えば、NULL 値が指定の既知の値よりも大きいかどうかを DB2 に判別させると、その結果は UNKNOWN となります。この同じ既知の値よりも NULL 値が小さいかどうかを DB2 に判別させると、その結果は依然として UNKNOWN となります。

    特定の列に対して UNKNOWN の値が戻されることを許容しない場合、NULL の代わりにデフォルト値を定義することができます。プログラマーは、デフォルト値を扱う方法には精通しています。

  • 結合操作における NULL

    NULL は結合操作で特別な扱いが必要です。 NULL 値が含まれている可能性のある列に対して結合操作を行う場合、外部結合の使用を検討してください。