Null 値
すべてのスカラー・データ・タイプには、欠落値を表す特殊値があります。 この値は、 ヌル値、または ヌルと呼ばれます。
stringデータ・タイプは NULL 値をサポートしません。
ヌル・リテラル
スカラー型 T の NULL 値は、照会言語では NULL リテラル T(null)によって表されます。 以下の照会は、NULL 値でいっぱいになった単一行を戻します。
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), time(null)
NULL 値の述部
スカラー関数 isnull() を使用して、スカラー値が NULL 値であるかどうかを判別できます。 対応する関数 isnotnull() を使用して、スカラー値が NULL 値でないかどうかを判別できます。
string タイプは NULL 値をサポートしないため、 isempty() 関数と isnotempty() 関数を使用することをお勧めします。
NULL 値の等価と非等価
- 等価 (
==): 2 つの NULL 値に等価演算子を適用すると、bool(null)になります。 等価演算子を NULL 値と非 NULL 値に適用すると、bool(false)になります。 - 不等式 (
!=): 2 つの NULL 値に不等式演算子を適用すると、bool(null)が生成されます。 非等価演算子を NULL 値および非 NULL 値に適用すると、bool(true)になります。
例:
datatable(val:int)[5, int(null)]
| extend IsBiggerThan3 = val > 3
| extend IsBiggerThan3OrNull = val > 3 or isnull(val)
| extend IsEqualToNull = val == int(null)
| extend IsNotEqualToNull = val != int(null)
結果
| 値 | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
|---|---|---|---|---|
| 5 | はい | はい | いいえ | はい |
| null | null | はい | null | null |
NULL 値と where 照会演算子
where 演算子 は、ブール式を使用して、各入力レコードを出力に出力するかどうかを決定します。 この演算子は、NULL 値を bool(false)であるかのように扱います。 述部が NULL 値を戻すレコードは除去され、出力には表示されません。
例:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
結果
| IVAL | スヴァル |
|---|---|
| null | b |
2 項演算子と NULL 値
2 項演算子は、2 つのスカラー値を受け入れ、3 番目の値を生成するスカラー演算子です。 例えば、より大 (>) とブール AND (& &) です。 2 項演算子です。
下記を除くすべての 2 項演算子の場合、規則は次のようになります。
2 項演算子に入力された値の一方または両方が NULL 値である場合、2 項演算子の出力も NULL 値になります。 言い換えると、NULL 値は「スティッキー」です。
このルールの例外
- 等価演算子 (
==) および非等価演算子 (!=) の場合、一方の値が NULL で、他方の値が NULL でない場合、結果はそれぞれbool(false)またはbool(true)のいずれかになります。 - 論理 AND (& &) の場合 operator のいずれかの値が
bool(false)の場合、結果もbool(false)になります。 - 論理 OR (
||) 演算子の場合、いずれかの値がbool(true)であれば、結果もbool(true)になります。
例
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
結果
| 値 | 追加 | 乗算 |
|---|---|---|
| 5 | 15 | 50 |
| null | null | null |
NULL 値と in 演算子
- in 演算子 は、等価比較の論理 OR のように動作します。
- ! in 演算子は、不等比較の論理 AND のように動作します。