

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

# 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)、[案例陳述式](iot-sql-case.md)、[JSON Extensions](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 承載：`80`

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

在此情況下，該規則會觸發，並且執行由規則指定的動作。傳出承載將由 SELECT 子句轉換為 JSON 承載 `{"value":80}`。