

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# SQL 版本
<a name="iot-rule-sql-version"></a>

 AWS IoT 规则引擎使用类似 SQL 的语法从 MQTT 消息中选择数据。SQL 语句基于 SQL 版本进行解释，该版本由描述此规则的 JSON 文档中的 `awsIotSqlVersion` 属性指定。有关 JSON 规则文档结构的更多信息，请参阅[创建规则](iot-create-rule.md)。该`awsIotSqlVersion`属性允许您指定要使用的 AWS IoT SQL 规则引擎版本。当部署新版本时，您可以继续使用早期版本或更改规则以使用新版本。您当前的规则将继续使用创建时所用的版本。

以下 JSON 示例介绍了如何使用 `awsIotSqlVersion` 属性指定 SQL 版本：

```
{
    "sql": "expression",
    "ruleDisabled": false,
    "awsIotSqlVersion": "2016-03-23",
    "actions": [{
        "republish": {
            "topic": "my-mqtt-topic",
            "roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
        }
    }]
}
```

AWS IoT 目前支持以下 SQL 版本：
+ `2016-03-23` – 2016 年 3 月 23 日构建的 SQL 版本（建议）。
+ `2015-10-08` – 2015 年 10 月 8 日构建的 SQL 原始版本。
+ `beta` – 最新的 SQL 测试版本。此版本可能会给您的规则带来突破性变化。

## 2016-03-23 SQL 规则引擎版本中的新增功能
<a name="sql-2016-03-23-beta"></a>
+ 针对选择嵌套 JSON 对象的修复程序。
+ 针对阵列查询的修复程序。
+ 对象内查询支持。有关更多信息，请参阅 [嵌套对象查询](iot-sql-nested-queries.md)。
+ 支持将阵列作为顶级对象输出。
+ 添加可应用于 JSON 和非 JSON 格式数据的 `encode(value, encodingScheme)` 函数。有关更多信息，请参阅[编码函数](iot-sql-functions.md#iot-sql-encode-payload)。

### 将 `Array` 作为顶级对象输出
<a name="return-array-rule"></a>

此特征允许规则将阵列作为顶级对象返回。例如，给定了以下 MQTT 消息：

```
{
    "a": {"b":"c"},
    "arr":[1,2,3,4]
}
```

以及以下规则：

```
SELECT VALUE arr FROM 'topic'
```

该规则生成以下输出。

```
[1,2,3,4]
```