mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-18 04:12:19 +00:00
Merge pull request #25797 from gyuton/gyuton-DOCSUP-10112-Document-logical-functions
DOCSUP-10112: Documented logical functions
This commit is contained in:
commit
0608eb41ce
@ -5,15 +5,186 @@ toc_title: Logical
|
|||||||
|
|
||||||
# Logical Functions {#logical-functions}
|
# Logical Functions {#logical-functions}
|
||||||
|
|
||||||
Logical functions accept any numeric types, but return a UInt8 number equal to 0 or 1.
|
Performs logical operations on arguments of any numeric types, but returns a [UInt8](../../sql-reference/data-types/int-uint.md) number equal to 0, 1 or `NULL` in some cases.
|
||||||
|
|
||||||
Zero as an argument is considered “false,” while any non-zero value is considered “true”.
|
Zero as an argument is considered `false`, while any non-zero value is considered `true`.
|
||||||
|
|
||||||
## and, AND operator {#and-and-operator}
|
## and {#logical-and-function}
|
||||||
|
|
||||||
## or, OR operator {#or-or-operator}
|
Calculates the result of the logical conjunction between two or more values. Corresponds to [Logical AND Operator](../../sql-reference/operators/index.md#logical-and-operator).
|
||||||
|
|
||||||
## not, NOT operator {#not-not-operator}
|
**Syntax**
|
||||||
|
|
||||||
## xor {#xor}
|
``` sql
|
||||||
|
and(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — List of at least two values. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) or [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `0`, if there is at least one zero value argument.
|
||||||
|
- `NULL`, if there are no zero values arguments and there is at least one `NULL` argument.
|
||||||
|
- `1`, otherwise.
|
||||||
|
|
||||||
|
Type: [UInt8](../../sql-reference/data-types/int-uint.md) or [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT and(0, 1, -2);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─and(0, 1, -2)─┐
|
||||||
|
│ 0 │
|
||||||
|
└───────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
With `NULL`:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT and(NULL, 1, 10, -2);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─and(NULL, 1, 10, -2)─┐
|
||||||
|
│ ᴺᵁᴸᴸ │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## or {#logical-or-function}
|
||||||
|
|
||||||
|
Calculates the result of the logical disjunction between two or more values. Corresponds to [Logical OR Operator](../../sql-reference/operators/index.md#logical-or-operator).
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
and(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — List of at least two values. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) or [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `1`, if there is at least one non-zero value.
|
||||||
|
- `0`, if there are only zero values.
|
||||||
|
- `NULL`, if there are only zero values and `NULL`.
|
||||||
|
|
||||||
|
Type: [UInt8](../../sql-reference/data-types/int-uint.md) or [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT or(1, 0, 0, 2, NULL);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─or(1, 0, 0, 2, NULL)─┐
|
||||||
|
│ 1 │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
With `NULL`:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT or(0, NULL);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─or(0, NULL)─┐
|
||||||
|
│ ᴺᵁᴸᴸ │
|
||||||
|
└─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## not {#logical-not-function}
|
||||||
|
|
||||||
|
Calculates the result of the logical negation of the value. Corresponds to [Logical Negation Operator](../../sql-reference/operators/index.md#logical-negation-operator).
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
not(val);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `val` — The value. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) or [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `1`, if the `val` is `0`.
|
||||||
|
- `0`, if the `val` is a non-zero value.
|
||||||
|
- `NULL`, if the `val` is a `NULL` value.
|
||||||
|
|
||||||
|
Type: [UInt8](../../sql-reference/data-types/int-uint.md) or [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT NOT(1);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` test
|
||||||
|
┌─not(1)─┐
|
||||||
|
│ 0 │
|
||||||
|
└────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## xor {#logical-xor-function}
|
||||||
|
|
||||||
|
Calculates the result of the logical exclusive disjunction between two or more values. For more than two values the function works as if it calculates `XOR` of the first two values and then uses the result with the next value to calculate `XOR` and so on.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
xor(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — List of at least two values. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) or [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `1`, for two values: if one of the values is zero and other is not.
|
||||||
|
- `0`, for two values: if both values are zero or non-zero at the same time.
|
||||||
|
- `NULL`, if there is at least one `NULL` value.
|
||||||
|
|
||||||
|
Type: [UInt8](../../sql-reference/data-types/int-uint.md) or [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT xor(0, 1, 1);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─xor(0, 1, 1)─┐
|
||||||
|
│ 0 │
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
@ -211,17 +211,17 @@ SELECT toDateTime('2014-10-26 00:00:00', 'Europe/Moscow') AS time, time + 60 * 6
|
|||||||
- [Interval](../../sql-reference/data-types/special-data-types/interval.md) data type
|
- [Interval](../../sql-reference/data-types/special-data-types/interval.md) data type
|
||||||
- [toInterval](../../sql-reference/functions/type-conversion-functions.md#function-tointerval) type conversion functions
|
- [toInterval](../../sql-reference/functions/type-conversion-functions.md#function-tointerval) type conversion functions
|
||||||
|
|
||||||
## Logical Negation Operator {#logical-negation-operator}
|
|
||||||
|
|
||||||
`NOT a` – The `not(a)` function.
|
|
||||||
|
|
||||||
## Logical AND Operator {#logical-and-operator}
|
## Logical AND Operator {#logical-and-operator}
|
||||||
|
|
||||||
`a AND b` – The`and(a, b)` function.
|
Syntax `SELECT a AND b` — calculates logical conjunction of `a` and `b` with the function [and](../../sql-reference/functions/logical-functions.md#logical-and-function).
|
||||||
|
|
||||||
## Logical OR Operator {#logical-or-operator}
|
## Logical OR Operator {#logical-or-operator}
|
||||||
|
|
||||||
`a OR b` – The `or(a, b)` function.
|
Syntax `SELECT a OR b` — calculates logical disjunction of `a` and `b` with the function [or](../../sql-reference/functions/logical-functions.md#logical-or-function).
|
||||||
|
|
||||||
|
## Logical Negation Operator {#logical-negation-operator}
|
||||||
|
|
||||||
|
Syntax `SELECT NOT a` — calculates logical negation of `a` with the function [not](../../sql-reference/functions/logical-functions.md#logical-not-function).
|
||||||
|
|
||||||
## Conditional Operator {#conditional-operator}
|
## Conditional Operator {#conditional-operator}
|
||||||
|
|
||||||
|
@ -5,15 +5,186 @@ toc_title: "Логические функции"
|
|||||||
|
|
||||||
# Логические функции {#logicheskie-funktsii}
|
# Логические функции {#logicheskie-funktsii}
|
||||||
|
|
||||||
Логические функции принимают любые числовые типы, а возвращают число типа UInt8, равное 0 или 1.
|
Логические функции производят логические операции над любыми числовыми типами, а возвращают число типа [UInt8](../../sql-reference/data-types/int-uint.md), равное 0, 1, а в некоторых случаях `NULL`.
|
||||||
|
|
||||||
Ноль в качестве аргумента считается «ложью», а любое ненулевое значение - «истиной».
|
Ноль в качестве аргумента считается `ложью`, а любое ненулевое значение — `истиной`.
|
||||||
|
|
||||||
## and, оператор AND {#and-operator-and}
|
## and {#logical-and-function}
|
||||||
|
|
||||||
## or, оператор OR {#or-operator-or}
|
Вычисляет результат логической конъюнкции между двумя и более значениями. Соответствует [оператору логического "И"](../../sql-reference/operators/index.md#logical-and-operator).
|
||||||
|
|
||||||
## not, оператор NOT {#not-operator-not}
|
**Синтаксис**
|
||||||
|
|
||||||
## xor {#xor}
|
``` sql
|
||||||
|
and(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Аргументы**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — список из как минимум двух значений. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) или [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Возвращаемое значение**
|
||||||
|
|
||||||
|
- `0`, если среди аргументов есть хотя бы один нуль.
|
||||||
|
- `NULL`, если среди аргументов нет нулей, но есть хотя бы один `NULL`.
|
||||||
|
- `1`, в остальных случаях.
|
||||||
|
|
||||||
|
Тип: [UInt8](../../sql-reference/data-types/int-uint.md) или [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Пример**
|
||||||
|
|
||||||
|
Запрос:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT and(0, 1, -2);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─and(0, 1, -2)─┐
|
||||||
|
│ 0 │
|
||||||
|
└───────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
Со значениями `NULL`:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT and(NULL, 1, 10, -2);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─and(NULL, 1, 10, -2)─┐
|
||||||
|
│ ᴺᵁᴸᴸ │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## or {#logical-or-function}
|
||||||
|
|
||||||
|
Вычисляет результат логической дизъюнкции между двумя и более значениями. Соответствует [оператору логического "ИЛИ"](../../sql-reference/operators/index.md#logical-or-operator).
|
||||||
|
|
||||||
|
**Синтаксис**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
and(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Аргументы**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — список из как минимум двух значений. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) или [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `1`, если среди аргументов есть хотя бы одно ненулевое число.
|
||||||
|
- `0`, если среди аргументов только нули.
|
||||||
|
- `NULL`, если среди аргументов нет ненулевых значений, и есть `NULL`.
|
||||||
|
|
||||||
|
Тип: [UInt8](../../sql-reference/data-types/int-uint.md) или [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Пример**
|
||||||
|
|
||||||
|
Запрос:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT or(1, 0, 0, 2, NULL);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─or(1, 0, 0, 2, NULL)─┐
|
||||||
|
│ 1 │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
Со значениями `NULL`:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT or(0, NULL);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─or(0, NULL)─┐
|
||||||
|
│ ᴺᵁᴸᴸ │
|
||||||
|
└─────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## not {#logical-not-function}
|
||||||
|
|
||||||
|
Вычисляет результат логического отрицания аргумента. Соответствует [оператору логического отрицания](../../sql-reference/operators/index.md#logical-negation-operator).
|
||||||
|
|
||||||
|
**Синтаксис**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
not(val);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Аргументы**
|
||||||
|
|
||||||
|
- `val` — значение. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) или [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Возвращаемое значение**
|
||||||
|
|
||||||
|
- `1`, если `val` — это `0`.
|
||||||
|
- `0`, если `val` — это ненулевое число.
|
||||||
|
- `NULL`, если `val` — это `NULL`.
|
||||||
|
|
||||||
|
Тип: [UInt8](../../sql-reference/data-types/int-uint.md) или [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Пример**
|
||||||
|
|
||||||
|
Запрос:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT NOT(1);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` test
|
||||||
|
┌─not(1)─┐
|
||||||
|
│ 0 │
|
||||||
|
└────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## xor {#logical-xor-function}
|
||||||
|
|
||||||
|
Вычисляет результат логической исключающей дизъюнкции между двумя и более значениями. При более чем двух значениях функция работает так: сначала вычисляет `XOR` для первых двух значений, а потом использует полученный результат при вычислении `XOR` со следующим значением и так далее.
|
||||||
|
|
||||||
|
**Синтаксис**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
xor(val1, val2...)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Аргументы**
|
||||||
|
|
||||||
|
- `val1, val2, ...` — список из как минимум двух значений. [Int](../../sql-reference/data-types/int-uint.md), [UInt](../../sql-reference/data-types/int-uint.md), [Float](../../sql-reference/data-types/float.md) или [Nullable](../../sql-reference/data-types/nullable.md).
|
||||||
|
|
||||||
|
**Returned value**
|
||||||
|
|
||||||
|
- `1`, для двух значений: если одно из значений является нулем, а второе нет.
|
||||||
|
- `0`, для двух значений: если оба значения одновременно нули или ненулевые числа.
|
||||||
|
- `NULL`, если среди аргументов хотя бы один `NULL`.
|
||||||
|
|
||||||
|
Тип: [UInt8](../../sql-reference/data-types/int-uint.md) or [Nullable](../../sql-reference/data-types/nullable.md)([UInt8](../../sql-reference/data-types/int-uint.md)).
|
||||||
|
|
||||||
|
**Пример**
|
||||||
|
|
||||||
|
Запрос:
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT xor(0, 1, 1);
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
|
||||||
|
``` text
|
||||||
|
┌─xor(0, 1, 1)─┐
|
||||||
|
│ 0 │
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
@ -211,17 +211,17 @@ SELECT toDateTime('2014-10-26 00:00:00', 'Europe/Moscow') AS time, time + 60 * 6
|
|||||||
- Тип данных [Interval](../../sql-reference/operators/index.md)
|
- Тип данных [Interval](../../sql-reference/operators/index.md)
|
||||||
- Функции преобразования типов [toInterval](../../sql-reference/operators/index.md#function-tointerval)
|
- Функции преобразования типов [toInterval](../../sql-reference/operators/index.md#function-tointerval)
|
||||||
|
|
||||||
## Оператор логического отрицания {#operator-logicheskogo-otritsaniia}
|
## Оператор логического "И" {#logical-and-operator}
|
||||||
|
|
||||||
`NOT a` - функция `not(a)`
|
Синтаксис `SELECT a AND b` — вычисляет логическую конъюнкцию между `a` и `b` функцией [and](../../sql-reference/functions/logical-functions.md#logical-and-function).
|
||||||
|
|
||||||
## Оператор логического ‘И’ {#operator-logicheskogo-i}
|
## Оператор логического "ИЛИ" {#logical-or-operator}
|
||||||
|
|
||||||
`a AND b` - функция `and(a, b)`
|
Синтаксис `SELECT a OR b` — вычисляет логическую дизъюнкцию между `a` и `b` функцией [or](../../sql-reference/functions/logical-functions.md#logical-or-function).
|
||||||
|
|
||||||
## Оператор логического ‘ИЛИ’ {#operator-logicheskogo-ili}
|
## Оператор логического отрицания {#logical-negation-operator}
|
||||||
|
|
||||||
`a OR b` - функция `or(a, b)`
|
Синтаксис `SELECT NOT a` — вычисляет логическое отрицание `a` функцией [not](../../sql-reference/functions/logical-functions.md#logical-not-function).
|
||||||
|
|
||||||
## Условный оператор {#uslovnyi-operator}
|
## Условный оператор {#uslovnyi-operator}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user