数据类型 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

数据类型

Amazon 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 True 、 或 False
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

Conversions

下表列出当一个类型的值转换为另一个类型时 (为函数提供错误类型的值时) 返回的结果。例如,如果绝对值函数“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。Amazon 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。Amazon IoT 会尝试解析与正则表达式相匹配的字符串:^-?\d+(\.\d+)?((?i)E-?\d+)?$。可自动转换为 Decimal 的字符串示例包括 "0"、"-1.2"、"5E-12"。Amazon 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。