行のある列の値がない場合、その列は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を戻します。
NULLを検査するには、比較条件IS
NULL
およびIS
NOT
NULL
のみを使用します。NULLを他の条件で使用して、その結果がNULLの値に依存する場合、結果はUNKNOWN
になります。NULLはデータの欠落を表すため、任意の値や別のNULLとの関係で等号や不等号は成り立ちません。ただし、OracleはDECODE
ファンクションを評価するときに2つのNULLを等しい値とみなします。構文および追加情報については、「DECODE」を参照してください。
コンポジット・キーの場合、2つのNULLは等しいと判断されます。NULLを含む2つのコンポジット・キーは、そのキーのNULL以外のコンポーネントのすべてが等しい場合、同一であると判断されます。
UNKNOWN
として評価される条件は、FALSE
と評価される場合とほとんど同じ働きをします。たとえば、UNKNOWN
と評価される条件をWHERE
句に持つSELECT
文からは、行が戻されません。ただし、UNKNOWN
と評価される条件はFALSE
条件とは異なり、UNKNOWN
条件をさらに評価してもUNKNOWN
と評価されます。したがって、NOT
FALSE
はTRUE
と評価されますが、NOT
UNKNOWN
はUNKNOWN
と評価されます。
表3-20は、条件にNULLを含む評価の例です。SELECT
文のWHERE
句でUNKNOWN
と評価される条件が使用された場合、その問合せに対して行は戻されません。