

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SELECT 句
<a name="iot-sql-select"></a>

 AWS IoT SELECT 句は基本的に ANSI SQL SELECT 句と同じですが、いくつかの小さな違いがあります。

SELECT 句は、[データ型](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)、および をサポートします[バイナリペイロード](binary-payloads.md)。

SELECT 句を使用して、受信 MQTT メッセージから情報を抽出できます。`SELECT *` を使用して、受信メッセージのペイロード全体を取得することもできます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL statement: SELECT * FROM 'topic/subtopic'
Outgoing payload: {"color":"red", "temperature":50}
```

ペイロードが JSON オブジェクトの場合、オブジェクトのキーを参照できます。出力ペイロードにはキーと値のペアが含まれます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL statement: SELECT color FROM 'topic/subtopic'
Outgoing payload: {"color":"red"}
```

AS キーワードを使用してキーの名前を変更できます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic':{"color":"red", "temperature":50}
SQL:SELECT color AS my_color FROM 'topic/subtopic'
Outgoing payload: {"my_color":"red"}
```

カンマで区切ることで、複数の項目を選択できます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL: SELECT color as my_color, temperature as fahrenheit FROM 'topic/subtopic'
Outgoing payload: {"my_color":"red","fahrenheit":50}
```

「\$1」を含む複数の項目を選択して、受信ペイロードに項目を追加できます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL: SELECT *, 15 as speed FROM 'topic/subtopic'
Outgoing payload: {"color":"red", "temperature":50, "speed":15}
```

`"VALUE"` キーワードを使用して、JSON オブジェクトではない出力ペイロードを作成できます。SQL バージョン `2015-10-08` では、選択できる項目は 1 つのみです。SQL バージョン `2016-03-23` 以降では、最上位オブジェクトとして出力する配列を選択することもできます。

**Example**  

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL: SELECT VALUE color FROM 'topic/subtopic'
Outgoing payload: "red"
```

`'.'` 構文を使用して、受信ペイロードで入れ子になっている JSON オブジェクトを詳細に調べることができます。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":{"red":255,"green":0,"blue":0}, "temperature":50}
SQL: SELECT color.red as red_value FROM 'topic/subtopic'
Outgoing payload: {"red_value":255}
```

数字やハイフン (マイナス) 文字などの予約文字を含む JSON オブジェクトおよびプロパティ名の使用方法については、「[JSON 拡張](iot-sql-json.md)」を参照してください。

関数を使用して受信ペイロードを変換できます ([関数](iot-sql-functions.md) を参照)。グループ化するには括弧を使用します。以下に例を示します。

```
Incoming payload published on topic 'topic/subtopic': {"color":"red", "temperature":50}
SQL: SELECT (temperature - 32) * 5 / 9 AS celsius, upper(color) as my_color FROM 'topic/subtopic'
Outgoing payload: {"celsius":10,"my_color":"RED"}
```