NULL
行のある列の値がない場合、その列はNULLである、またはNULLを含むといいます。NOT
NULL
整合性制約またはPRIMARY
KEY
整合性制約によって制限されていない列の場合は、どのデータ型の列でもNULLを含むことができます。実際のデータ値が不定または値に意味がない場合に、NULLを使用してください。
Oracle Databaseは、長さが0(ゼロ)の文字値をNULLとして処理します。ただし、数値0を表すのにnullを使用しないでください。この2つは等価ではありません。
ノート:
Oracle Databaseは現在、長さが0(ゼロ)の文字値をNULLとして処理します。ただし、将来のリリースではこの処理が変更される場合があるため、空の文字列をnullと同じように処理しないことをお薦めします。
nullを含む算術式は常にnullに評価されます。たとえば、10にnullを加算したものはnullです。実際、nullオペランドを指定すると、すべての演算子では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
に評価される条件は、UNKNOWN
条件の評価でさらに操作を行う場合はUNKNOWN
に評価されるのでFALSE
とは異なります。このため、NOT
FALSE
はTRUE
に評価されますが、NOT
UNKNOWN
はUNKNOWN
に評価されます。
表2-22は、条件でnullを使用する場合の様々な評価の例を示しています。SELECT
文のWHERE
句でUNKNOWN
に評価される条件を使用する場合、問合せで返される行はありません。
表2-22 Nullを使用する条件
条件 | aの値 | 評価 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|