> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação das funções lógicas

# Funções lógicas

As funções abaixo executam operações lógicas em argumentos de tipos numéricos arbitrários.
Elas retornam `0` ou `1` como [`UInt8`](/pt-BR/reference/data-types/int-uint) ou, em alguns casos, `NULL`.

Zero como argumento é considerado `false`, e valores diferentes de zero são considerados `true`.

{/*AUTOGENERATED_START*/}

<div id="and">
  ## and
</div>

Introduzido em: v1.1.0

Calcula a conjunção lógica de dois ou mais valores.

A configuração [`short_circuit_function_evaluation`](/pt-BR/reference/settings/session-settings#short_circuit_function_evaluation) controla se a avaliação de curto-circuito é utilizada.
Se estiver habilitada, `val_i` será avaliado somente se `(val_1 AND val_2 AND ... AND val_{i-1})` for `true`.

Por exemplo, com a avaliação de curto-circuito, nenhuma exceção de divisão por zero é gerada ao executar a consulta `SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)`.
Zero como argumento é considerado `false`; valores diferentes de zero são considerados `true`.

**Sintaxe**

```sql theme={null}
and(val1, val2[, ...])
```

**Argumentos**

* `val1, val2[, ...]` — Lista de pelo menos dois valores. [`Nullable((U)Int*)`](/pt-BR/reference/data-types/nullable) ou [`Nullable(Float*)`](/pt-BR/reference/data-types/nullable)

**Valor retornado**

Retorna:

* `0`, se pelo menos um argumento resultar em `false`
* `NULL`, se nenhum argumento resultar em `false` e pelo menos um argumento for `NULL`
* `1`, caso contrário
  [`Nullable(UInt8)`](/pt-BR/reference/data-types/nullable)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT and(0, 1, -2);
```

```response title=Response theme={null}
0
```

**Com NULL**

```sql title=Query theme={null}
SELECT and(NULL, 1, 10, -2);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="not">
  ## not
</div>

Introduzido em: v1.1.0

Calcula a negação lógica de um valor.
Zero como argumento é considerado `false`; valores diferentes de zero são considerados `true`.

**Sintaxe**

```sql theme={null}
not(val)
```

**Argumentos**

* `val` — O valor. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna:

* `1`, se `val` resultar em `false`
* `0`, se `val` resultar em `true`
* `NULL`, se `val` for `NULL`.
  [`Nullable(UInt8)`](/pt-BR/reference/data-types/nullable)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT NOT(1);
```

```response title=Response theme={null}
0
```

<div id="or">
  ## or
</div>

Introduzido em: v1.1.0

Calcula a disjunção lógica de dois ou mais valores.

A configuração [`short_circuit_function_evaluation`](/pt-BR/reference/settings/session-settings#short_circuit_function_evaluation) determina se a avaliação de curto-circuito será usada.
Se estiver habilitada, `val_i` será avaliado apenas se `((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))` for `true`.

Por exemplo, com a avaliação de curto-circuito, nenhuma exceção de divisão por zero é lançada ao executar a consulta `SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)`.
Zero como argumento é considerado `false`, e valores diferentes de zero são considerados `true`.

**Sintaxe**

```sql theme={null}
or(val1, val2[, ...])
```

**Argumentos**

* `val1, val2[, ...]` — Lista de pelo menos dois valores. [`Nullable((U)Int*)`](/pt-BR/reference/data-types/nullable) ou [`Nullable(Float*)`](/pt-BR/reference/data-types/nullable)

**Valor retornado**

Retorna:

* `1`, se pelo menos um argumento resultar em `true`
* `0`, se todos os argumentos resultarem em `false`
* `NULL`, se todos os argumentos resultarem em `false` e pelo menos um argumento for `NULL`
  [`Nullable(UInt8)`](/pt-BR/reference/data-types/nullable)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT or(1, 0, 0, 2, NULL);
```

```response title=Response theme={null}
1
```

**Com NULL**

```sql title=Query theme={null}
SELECT or(0, NULL);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="xor">
  ## xor
</div>

Introduzido em: v1.1.0

Calcula a disjunção exclusiva lógica de dois ou mais valores.
Para mais de dois valores de entrada, a função primeiro aplica xor aos dois primeiros valores e, em seguida, aplica xor ao resultado com o terceiro valor, e assim por diante.
Zero como argumento é considerado `false`; valores diferentes de zero são considerados `true`.

**Sintaxe**

```sql theme={null}
xor(val1, val2[, ...])
```

**Argumentos**

* `val1, val2[, ...]` — Lista de pelo menos dois valores. [`Nullable((U)Int*)`](/pt-BR/reference/data-types/nullable) ou [`Nullable(Float*)`](/pt-BR/reference/data-types/nullable)

**Valor retornado**

Retorna:

* `1`, para dois valores: se um dos valores resultar em `false` e o outro não
* `0`, para dois valores: se ambos os valores resultarem em `false` ou ambos em `true`
* `NULL`, se pelo menos um dos valores de entrada for `NULL`.
  [`Nullable(UInt8)`](/pt-BR/reference/data-types/nullable)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT xor(0, 1, 1);
```

```response title=Response theme={null}
0
```
