ClickHouse/docs/zh/query_language/functions/conditional_functions.md

51 lines
1.4 KiB
Markdown
Raw Normal View History

2019-05-05 17:38:05 +00:00
# 条件函数
## if(cond, then, else), cond ? operator then : else
如果`cond = 0`则返回`then`,如果`cond = 0`则返回`else`。
`cond`必须是`UInt8`类型,`then`和`else`必须存在最低的共同类型。
`then`和`else`可以是`NULL`
## multiIf
2019-06-07 10:40:49 +00:00
允许您在查询中更紧凑地编写[CASE](../operators.md#operator_case)运算符。
2019-05-05 17:38:05 +00:00
```
multiIf(cond_1, then_1, cond_2, then_2...else)
```
**参数:**
- `cond_N` — 函数返回`then_N`的条件。
- `then_N` — 执行时函数的结果。
- `else` — 如果没有满足任何条件,则为函数的结果。
该函数接受`2N + 1`参数。
**返回值**
该函数返回值“then_N”或“else”之一具体取决于条件`cond_N`。
**示例**
存在如下一张表
```
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │ 3 │
└───┴──────┘
```
执行查询 `SELECT multiIf(isNull(y) x, y < 3, y, NULL) FROM t_null`。结果:
```
┌─multiIf(isNull(y), x, less(y, 3), y, NULL)─┐
│ 1 │
│ ᴺᵁᴸᴸ │
└────────────────────────────────────────────┘
```
[来源文章](https://clickhouse.yandex/docs/en/query_language/functions/conditional_functions/) <!--hide-->