GitHubContribute in GitHub: オンラインでの編集

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 のように動作します。