2020-03-20 18:20:59 +00:00
|
|
|
|
# 条件函数 {#tiao-jian-han-shu}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
## 如果(cond,那么,否则),cond? 运算符然后:else {#ifcond-then-else-cond-operator-then-else}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
如果`cond != 0`则返回`then`,如果`cond = 0`则返回`else`。
|
|
|
|
|
`cond`必须是`UInt8`类型,`then`和`else`必须存在最低的共同类型。
|
|
|
|
|
|
|
|
|
|
`then`和`else`可以是`NULL`
|
|
|
|
|
|
2020-04-08 14:22:25 +00:00
|
|
|
|
## 多 {#multiif}
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-05-15 04:34:54 +00:00
|
|
|
|
允许您在查询中更紧凑地编写[CASE](../operators/index.md#operator_case)运算符。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
multiIf(cond_1, then_1, cond_2, then_2...else)
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
**参数:**
|
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
- `cond_N` — 函数返回`then_N`的条件。
|
|
|
|
|
- `then_N` — 执行时函数的结果。
|
|
|
|
|
- `else` — 如果没有满足任何条件,则为函数的结果。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
该函数接受`2N + 1`参数。
|
|
|
|
|
|
|
|
|
|
**返回值**
|
|
|
|
|
|
2020-10-13 17:23:29 +00:00
|
|
|
|
该函数返回值«then_N»或«else»之一,具体取决于条件`cond_N`。
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
|
|
|
|
**示例**
|
|
|
|
|
|
|
|
|
|
存在如下一张表
|
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
┌─x─┬────y─┐
|
|
|
|
|
│ 1 │ ᴺᵁᴸᴸ │
|
|
|
|
|
│ 2 │ 3 │
|
|
|
|
|
└───┴──────┘
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-09-17 14:54:28 +00:00
|
|
|
|
执行查询 `SELECT multiIf(isNull(y), x, y < 3, y, NULL) FROM t_null`。结果:
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-03-21 04:11:51 +00:00
|
|
|
|
┌─multiIf(isNull(y), x, less(y, 3), y, NULL)─┐
|
|
|
|
|
│ 1 │
|
|
|
|
|
│ ᴺᵁᴸᴸ │
|
|
|
|
|
└────────────────────────────────────────────┘
|
2019-05-05 17:38:05 +00:00
|
|
|
|
|
2020-01-30 10:34:55 +00:00
|
|
|
|
[来源文章](https://clickhouse.tech/docs/en/query_language/functions/conditional_functions/) <!--hide-->
|