

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

# WHERE 子句
<a name="iot-sql-where"></a>

WHERE 子句可确定是否执行规则指定的操作。如果 WHERE 子句的计算结果为 true，则执行规则操作。否则，不执行规则操作。

WHERE 子句支持[数据类型](iot-sql-data-types.md)[运算符](iot-sql-operators.md)、[函数](iot-sql-functions.md)、[文本](iot-sql-literals.md)、[Case 语句](iot-sql-case.md)、、[JSON 扩展](iot-sql-json.md)、、[变量](iot-sql-set.md#iot-sql-set-usage)和[嵌套对象查询](iot-sql-nested-queries.md)。

**示例**：

传入有效载荷已发布至 `topic/subtopic`：`{"color":"red", "temperature":40}`。

SQL：`SELECT color AS my_color FROM 'topic/subtopic' WHERE temperature > 50 AND color <> 'red'`。

在这种情况下，规则将被触发，但不会执行规则所指定的操作。没有传出的有效载荷。

您可以在 WHERE 子句中使用函数和运算符。但是，您无法引用在 SELECT 中通过 AS 关键字创建的任何别名。首先评估 WHERE 语句，以确定是否评估 SELECT。

**带非 JSON 有效载荷的示例：**

传入的非 JSON 有效载荷，发布位置：“topic/subtopic”：“80”

SQL：``SELECT decode(encode(*, 'base64'), 'base64') AS value FROM 'topic/subtopic' WHERE decode(encode(*, 'base64'), 'base64') > 50`

在这种情况下，规则将被触发，并且将执行规则所指定的操作。传出的有效载荷将由 SELECT 子句转换为 JSON 有效载荷 `{"value":80}`。