ClickHouse/docs/ru/sql-reference/functions/conditional-functions.md
Ivan Blinkov cd14f9ebcb
SQL reference refactoring (#10857)
* split up select.md

* array-join.md basic refactoring

* distinct.md basic refactoring

* format.md basic refactoring

* from.md basic refactoring

* group-by.md basic refactoring

* having.md basic refactoring

* additional index.md refactoring

* into-outfile.md basic refactoring

* join.md basic refactoring

* limit.md basic refactoring

* limit-by.md basic refactoring

* order-by.md basic refactoring

* prewhere.md basic refactoring

* adjust operators/index.md links

* adjust sample.md links

* adjust more links

* adjust operatots links

* fix some links

* adjust aggregate function article titles

* basic refactor of remaining select clauses

* absolute paths in make_links.sh

* run make_links.sh

* remove old select.md locations

* translate docs/es

* translate docs/fr

* translate docs/fa

* remove old operators.md location

* change operators.md links

* adjust links in docs/es

* adjust links in docs/es

* minor texts adjustments

* wip

* update machine translations to use new links

* fix changelog

* es build fixes

* get rid of some select.md links

* temporary adjust ru links

* temporary adjust more ru links

* improve curly brace handling

* adjust ru as well

* fa build fix

* ru link fixes

* zh link fixes

* temporary disable part of anchor checks
2020-05-15 07:34:54 +03:00

110 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Условные функции {#uslovnye-funktsii}
## if {#if}
Условное выражение. В отличии от большинства систем, ClickHouse всегда считает оба выражения `then` и `else`.
**Синтаксис**
``` sql
SELECT if(cond, then, else)
```
Если условие `cond` не равно нулю, то возвращается результат выражения `then`. Если условие `cond` равно нулю или является NULL, то результат выражения `then` пропускается и возвращается результат выражения `else`.
**Параметры**
- `cond` Условие, которое может быть равно 0 или нет. Может быть [UInt8](../../sql-reference/functions/conditional-functions.md) или `NULL`.
- `then` - Возвращается результат выражения, если условие `cond` истинно.
- `else` - Возвращается результат выражения, если условие `cond` ложно.
**Возвращаемые значения**
Функция выполняет выражения `then` или `else` и возвращает его результат, в зависимости от того, было ли условие `cond` равно нулю или нет.
**Пример**
Запрос:
``` sql
SELECT if(1, plus(2, 2), plus(2, 6))
```
Ответ:
``` text
┌─plus(2, 2)─┐
│ 4 │
└────────────┘
```
Запрос:
``` sql
SELECT if(0, plus(2, 2), plus(2, 6))
```
Ответ:
``` text
┌─plus(2, 6)─┐
│ 8 │
└────────────┘
```
## Тернарный оператор {#ternary-operator}
Работает так же, как функция `if`.
Синтаксис: `cond ? then : else`
Возвращает `then`, если `cond` верно (больше нуля), в остальных случаях возвращает `else`.
- `cond` должно быть типа `UInt8`, `then` и `else` должны относиться к наименьшему общему типу.
- `then` и `else` могут быть `NULL`.
**Смотрите также**
- [ifNotFinite](other-functions.md#ifnotfinite).
## multiIf {#multiif}
Позволяет более компактно записать оператор [CASE](../operators/index.md#operator_case) в запросе.
multiIf(cond_1, then_1, cond_2, then_2...else)
**Параметры**
- `cond_N` — Условие, при выполнении которого функция вернёт `then_N`.
- `then_N` — Результат функции при выполнении.
- `else` — Результат функции, если ни одно из условий не выполнено.
Функция принимает `2N+1` параметров.
**Возвращаемые значения**
Функция возвращает одно из значений `then_N` или `else`, в зависимости от условий `cond_N`.
**Пример**
Рассмотрим таблицу
``` text
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │ 3 │
└───┴──────┘
```
Выполним запрос `SELECT multiIf(isNull(y), x, y < 3, y, NULL) FROM t_null`. Результат:
``` text
┌─multiIf(isNull(y), x, less(y, 3), y, NULL)─┐
│ 1 │
│ ᴺᵁᴸᴸ │
└────────────────────────────────────────────┘
```
[Оригинальная статья](https://clickhouse.tech/docs/ru/query_language/functions/conditional_functions/) <!--hide-->