GitHub GitHub: 線上編輯

空值

Kusto 中的所有純量資料類型都具有代表遺漏值的特殊值。 此值稱為 空值空值

  • string 資料類型不支援空值。

空值文字

純量類型 T 的空值以查詢語言以空值文字 T(null)表示。 下列查詢會傳回空值的單一列:

print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), time(null)

空值的述詞

純量函數 isnull() 可用來判斷純量值是否為空值。 對應的函數 isnotnull() 可用來判斷純量值是否不是空值。

因為 string 類型不支援空值,建議使用 isempty()isnotempty() 函數。

空值的等式和不等式

  • 相等 (==): 將相等運算子套用至兩個空值會產生 bool(null)。 將等式運算子套用至空值和非空值會產生 bool(false)
  • 不等式 (!=): 將不等式運算子套用至兩個空值會產生 bool(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 IsNotEqualTo空值
5 False
空值 空值 空值 空值

空值及 where 查詢運算子

where 運算子 使用布林表示式來決定是否將每一個輸入記錄發出至輸出。 此運算子會將空值視為 bool(false)。 述詞傳回空值的記錄會被捨棄,且不會出現在輸出中。

範例:

datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5

結果

伊瓦爾 斯瓦爾
空值 b

二進位運算子和空值

二進位運算子是接受兩個純量值並產生第三個值的純量運算子。 For example, greater-than (>) and Boolean AND (&&) are binary operators.

對於所有二進位運算子 ( 以下除外) ,規則如下:
如果輸入至二進位運算子的其中一個或兩個值都是空值,則二進位運算子的輸出也是空值。 換句話說,空值是 "sticky"。

此規則的例外

  • 對於等式 (==) 和不等式 (!=) 運算子,如果其中一個值是空值,而另一個值不是空值,則結果分別為 bool(false)bool(true)
  • For the logical AND (&&) operator, if one of the values is bool(false), the result is also bool(false).
  • 對於邏輯 OR (||) 運算子,如果其中一個值是 bool(true),則結果也是 bool(true)

範例

datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10

結果

新增
5 15 日 50
空值 空值 空值

空值及 in 運算子

  • in 運算子 的行為類似於相等比較的邏輯 OR。
  • ! in 運算子的行為類似於不等式比較的邏輯 AND。