mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-17 20:02:05 +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 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
|
||||
- [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}
|
||||
|
||||
`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}
|
||||
|
||||
`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}
|
||||
|
||||
|
@ -5,15 +5,186 @@ toc_title: "Логические функции"
|
||||
|
||||
# Логические функции {#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)
|
||||
- Функции преобразования типов [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}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user