ヘッダーをスキップ
Oracle® Database SQL言語リファレンス
12cリリース1 (12.1)
B71278-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

NULL

行のある列の値がない場合、その列はNULLである、またはNULLを含むといいます。NOT NULL整合性制約またはPRIMARY KEY整合性制約によって制限されていない列の場合は、どのデータ型の列でもNULLを含むことができます。実際のデータ値が不定または値に意味がない場合に、NULLを使用してください。

Oracle Databaseは、長さが0(ゼロ)の文字値をNULLとして処理します。ただし、NULLは値0(ゼロ)と同じではないため、0(ゼロ)の数値を表すためにNULL値を使用しないでください。


注意:

Oracle Databaseは現在、長さが0(ゼロ)の文字値をNULLとして処理します。ただし、この処理はOracleの今後のバージョンでも継続されるとはかぎらないため、空の文字列をNULLとして処理しないことをお薦めします。

NULLを含む算術式は、必ずNULLに評価されます。たとえば、NULLに10を加算しても結果はNULLです。実際、オペランドにNULLを指定した場合、(連結演算子を除く)すべての演算子はNULLを戻します。

SQLファンクションでのNULL

SQLファンクションでのNULL処理の詳細は、「SQLファンクションでのNULL」を参照してください。

比較条件でのNULL

NULLを検査するには、比較条件IS NULLおよびIS NOT NULLのみを使用します。NULLを他の条件で使用して、その結果がNULLの値に依存する場合、結果はUNKNOWNになります。NULLはデータの欠落を表すため、任意の値や別のNULLとの関係で等号や不等号は成り立ちません。ただし、OracleはDECODEファンクションを評価するときに2つのNULLを等しい値とみなします。構文および追加情報については、「DECODE」を参照してください。

コンポジット・キーの場合、2つのNULLは等しいと判断されます。NULLを含む2つのコンポジット・キーは、そのキーのNULL以外のコンポーネントのすべてが等しい場合、同一であると判断されます。

条件でのNULL

UNKNOWNとして評価される条件は、FALSEと評価される場合とほとんど同じ働きをします。たとえば、UNKNOWNと評価される条件をWHERE句に持つSELECT文からは、行が戻されません。ただし、UNKNOWNと評価される条件はFALSE条件とは異なり、UNKNOWN条件をさらに評価してもUNKNOWNと評価されます。したがって、NOT FALSETRUEと評価されますが、NOT UNKNOWNUNKNOWNと評価されます。

表2-20は、条件にNULLを含む評価の例です。SELECT文のWHERE句でUNKNOWNと評価される条件が使用された場合、その問合せに対して行は戻されません。

表2-20 NULLを含む条件

条件 aの値 評価

a IS NULL

10

FALSE

a IS NOT NULL

10

TRUE

a IS NULL

NULL

TRUE

a IS NOT NULL

NULL

FALSE

a = NULL

10

UNKNOWN

a != NULL

10

UNKNOWN

a = NULL

NULL

UNKNOWN

a != NULL

NULL

UNKNOWN

a = 10

NULL

UNKNOWN

a != 10

NULL

UNKNOWN


NULLを含む論理条件の結果を示した真理値表は、表6-5表6-6、および表6-7を参照してください。