Null値
NULL値は値がないことを示します。これは、存在しない値のプレースホルダとして使用されます。実際のデータ値が不定または値に意味がない場合に、NULLを使用してください。NULLは値0(ゼロ)と同じではないため、0(ゼロ)の数値を表すためにNULL値を使用しないでください。式内のパラメータには、そのデータ型に関係なく、NULLを含めることができます。さらに、表の作成時に列にNOT NULLまたはPRIMARY KEY整合性制約を指定している場合を除き、表内のすべての列にはそのデータ型に関係なくNULLを含めることができます。
NULLの次の特性は、行、パラメータ、ローカル変数の処理に影響します。
-
デフォルトでは、
NULLはソートにおいて最も優先順位が高い値としてソートされます。ただし、ORDER BY句でNULLS FIRSTまたはNULLS LASTを使用して、NULLのソート順序値を変更できます。 -
GROUP BYまたはSELECT DISTINCTの演算を除き、2つのNULL値は非等価です。 -
NULLを含む算術式は、NULLに評価されます。実際、オペランドにNULLを指定した場合、(連結演算子を除く)すべての演算子はNULLを戻します。たとえば、(5-col)のcolがNULLの場合、NULLと評価されます。 -
NULLを検査するには、比較条件IS NULLまたはIS NOT NULLを使用します。NULLはデータの欠落を表すため、任意の値や別のNULLとの関係で等号や不等号は成り立ちません。そのため、select * from employees where mgr_id = NULLという文は、このNULLに対する比較を行うことができないため、0(ゼロ)に評価されます。ただし、select * from employees where mgr_id is NULLという文は、会社のCEOを返します。CEOがマネージャを持たない唯一の従業員であるためです。詳細は、「IS NULL条件」を参照してください。 -
NULL値自体は演算子または条件のオペランドとして直接使用できます。たとえば、(1 = NULL)比較がサポートされます。これは、(1 = CAST(NULL AS INT))のように、NULLを適切なデータ型にキャストする場合と同じです。両方の方法がサポートされ、同じ結果を返します。
これらの属性によって、次のような場合は、NULLを含む列、行、パラメータが無視されます。
-
NULLを含む列を結合して表を結合した場合。 -
集計関数を実行した場合。
複数のSQL述語で、明示的にNULLについてテストできます。TimesTenでサポートされるAPIにより、NULL値を処理する方法が提供されます。たとえば、ODBCアプリケーションで、関数SQLBindCol、SQLBindParameter、SQLGetDataおよびSQLParamDataを使用して、NULL値の入出力を処理します。