

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

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

# 条件表达式
<a name="conditional-expressions"></a>

Timestream LiveAnalytics 支持以下条件表达式。

**Topics**
+ [CASE 语句](conditional-expressions.CASE.md)
+ [IF 语句](conditional-expressions.IF.md)
+ [COALESCE 语句](conditional-expressions.COALESCE.md)
+ [NULLIF 语句](conditional-expressions.NULLIF.md)
+ [TRY 语句](conditional-expressions.TRY.md)

# CASE 语句
<a name="conditional-expressions.CASE"></a>

**CASE** 语句从左到右搜索每个值表达式，直至找到与 `expression` 相等的表达式。如果找到匹配项，则返回匹配值的结果。如果未找到匹配项，则返回 `ELSE` 子句的结果（如果存在）；否则返回 `null`。语法如下：

```
CASE expression
    WHEN value THEN result
    [ WHEN ... ]
    [ ELSE result ]
END
```

 Timestream 还支持 **CASE** 语句的以下语法。在此语法中，“searched”形式会从左至右评估每个布尔条件，直至遇到条件为 `true` 的情况，并返回匹配结果。如果没有条件为 `true`，则返回 `ELSE` 子句的结果（如果存在）；否则返回 `null`。另请参阅以下替代语法：

```
CASE
    WHEN condition THEN result
    [ WHEN ... ]
    [ ELSE result ]
END
```

# IF 语句
<a name="conditional-expressions.IF"></a>

**IF** 语句评估条件为真或假，并返回相应的值。Timestream 支持 **IF** 的以下两种语法表示形式：

```
if(condition, true_value)
```

如果条件为 `true`，则此语法计算并返回 `true_value`；否则返回 `null`，且不计算 `true_value`。

```
if(condition, true_value, false_value)
```

如果条件为 `true`，则此语法计算并返回 `true_value`，否则计算并返回 `false_value`。

## 示例
<a name="conditional-expressions.IF.examples"></a>

```
SELECT
  if(true, 'example 1'),
  if(false, 'example 2'),
  if(true, 'example 3 true', 'example 3 false'),
  if(false, 'example 4 true', 'example 4 false')
```


| \$1col0 | \$1col1 | \$1col2 | \$1col3 | 
| --- | --- | --- | --- | 
|  `example 1`  |  `-` `null`  |  `example 3 true`  |  `example 4 false`  | 

# COALESCE 语句
<a name="conditional-expressions.COALESCE"></a>

 **COALESCE** 返回参数列表中第一个非 null 值。语法如下：

```
coalesce(value1, value2[,...])
```

# NULLIF 语句
<a name="conditional-expressions.NULLIF"></a>

**IF** 语句评估条件为真或假，并返回相应的值。Timestream 支持 **IF** 的以下两种语法表示形式：

如果 `value1` 等于 `value2`，**NULLIF** 返回 null；否则返回 `value1` 语法如下：

```
nullif(value1, value2)
```

# TRY 语句
<a name="conditional-expressions.TRY"></a>

**TRY** 函数计算表达式并通过返回 `null`，以处理某些类型的错误。语法如下：

```
try(expression)
```