資料類型 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

資料類型

AWS IoT 規則引擎支援所有 JSON 資料類型。

支援的資料類型
Type 意義
Int 離散的 Int。最多 34 位數。
Decimal

精度為 34 位的 Decimal,最小非零量級為 1E-999,最大量級為 9.999…E999。

注意

有些函數傳回的 Decimal 值為雙精度,而非 34 位數的精度。

使用 SQL V2 (2016-03-23) 時,數值若為整數 (例如 10.0) 會被當成 Int 值 (10) 處理,而不是預期的 Decimal 值 (10.0)。若要可靠地將整數數值當成 Decimal 值處理,請針對規則查詢陳述式使用 SQL V1 (2015-10-08)。

Boolean TrueFalse
String UTF-8 字串。
Array 一系列類型無需相同的值。
Object 由鍵和值組成的 JSON 值。鍵必須為字串。值可以為任何類型。
Null Null 是由 JSON 定義。此為用來代表缺少某個值的實際值。您可以在 SQL 陳述式中使用 Null 的關鍵字來明確建立 Null 的值。例如:"SELECT NULL AS n FROM 'topic/subtopic'"
Undefined

並非值。無法以 JSON 明確顯示,除非是省略該值。舉例而言,在物件 {"foo": null} 中,「foo」鍵會傳回 NULL,但「bar」鍵傳回 Undefined。SQL 語言在內部將 Undefined 視為一個值,但無法以 JSON 顯示,因此序列化為 JSON 時,結果會是 Undefined

{"foo":null, "bar":undefined}

序列化為 JSON 如下:

{"foo":null}

同樣地,Undefined 由自身序列化時,會轉換為空白字串。以無效引數 (例如,錯誤類型、錯誤的引數數量等等) 呼叫的函數會傳回 Undefined

轉換

下表列出的是當某個類型的值轉換為另一種類型 (給函數指定錯誤類型的值) 所得的結果。舉例而言,如果絕對值的函數「abs」(預期為 IntDecimal) 得到的是 String,其會嘗試按照下列規則將 String 轉換為 Decimal。此例中,'abs("-5.123")' 會視為 'abs(-5.123)'。

注意

不會企圖轉換為 ArrayObjectNullUndefined

To Decimal
引數類型 結果
Int 無小數點的 Decimal
Decimal 來源值。
Boolean Undefined。(您可以明確使用 Cast 函數轉換 true = 1.0、false = 0.0。)
String SQL 引擎會嘗試將字串剖析為Decimal. AWS IoT 嘗試解析匹配正則表達式的字符串:^-?\d+(\.\d+)?((?i)E-?\d+)?$。「0」、「-1.2」、「5E-12」均為自動轉換為 Decimal 的範例字串。
Array Undefined.
物件 Undefined.
Null Null.
未定義 Undefined.
To Int
引數類型 結果
Int 來源值。
Decimal 四捨五入到最接近 Int 的來源值。
Boolean Undefined。(您可以明確使用 Cast 函數轉換 true = 1.0、false = 0.0。)
String SQL 引擎會嘗試將字串剖析為Decimal. AWS IoT 嘗試解析匹配正則表達式的字符串:^-?\d+(\.\d+)?((?i)E-?\d+)?$。「0」,「-1.2」,「5E-12」都是自動轉換為 Decimal s 的字符串示例。 AWS IoT 嘗試將其轉換為 aDecimal,然後截斷該String字符串的小數位以創建。Decimal Int
Array Undefined.
物件 Undefined.
Null Null.
未定義 Undefined.
To Boolean
引數類型 結果
Int Undefined。(您可以明確使用 cast 函數轉換 0 = False、any_nonzero_value = True。)
Decimal Undefined。(您可以明確使用 Cast 函數轉換 0 = False、any_nonzero_value = True。)
Boolean 原始的值。
String 「true」= True 而「false」= False (不區分大小寫)。其他字串值為 Undefined
Array Undefined.
物件 Undefined.
Null Undefined.
未定義 Undefined.
To String
引數類型 結果
Int 以標準表示法表示的 Int 的字串顯示方式。
Decimal 代表 Decimal 值的字串,可能是採取科學表示法。
Boolean 「true」或「false」。所有小寫。
String 原始的值。
陣列 序列化為 JSON 的 Array。該結果字串為以逗號分隔的清單,並包含在方括弧內。String 在括號中。DecimalIntBooleanNull 則不是。
物件 序列化為 JSON 的物件。該結果字串為以逗號分隔的鍵值組清單,並以大括號為開頭和結尾。String 在括號中。DecimalIntBooleanNull 則不是。
Null Undefined.
未定義 未定義。