数据类型 - AWS IoT Core

数据类型

AWS IoT 规则引擎支持所有 JSON 数据类型。

支持的数据类型
类型 意义
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+)?$。可自动转换为 Decimal 的字符串示例包括 "0"、"-1.2"、"5E-12"。
数组 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+)?$。可自动转换为 Decimal 的字符串示例包括 "0"、"-1.2"、"5E-12"。AWS IoT 尝试将 String 转换为 Decimal,然后截断该 Decimal 的小数位,以得到一个 Int
数组 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
数组 Undefined.
对象 Undefined.
Null Undefined.
未定义 Undefined.
To string
参数类型 结果
Int 标准表示法中 Int 的字符串表示形式。
Decimal 科学表示法中 Decimal 值的字符串表示。
Boolean "true" 或 "false"。均为小写。
String 原始值。
数组 Array 序列化为 JSON。结果字符串为逗号分隔的列表,括在方括号中。String 带引号。DecimalIntBooleanNull 不带引号。
对象 序列化为 JSON 的对象。结果字符串为键值对的逗号分隔列表,以大括号开头和结束。String 带引号。DecimalIntBooleanNull 不带引号。
Null Undefined.
未定义 Undefined。