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

> Documentação sobre Funções de Comparação

# Funções de Comparação

<div id="comparison-rules">
  ## Regras de comparação
</div>

As funções de comparação abaixo retornam `0` ou `1` com o tipo [UInt8](/pt-BR/reference/data-types/int-uint). Somente valores dentro do mesmo grupo podem ser
comparados (por exemplo, `UInt16` e `UInt64`), mas não valores de grupos diferentes (por exemplo, `UInt16` e `DateTime`).
É possível comparar números e strings, assim como strings com datas e datas com horas.
Para tuplas e arrays, a comparação é lexicográfica, o que significa que ela é feita para cada
elemento correspondente da tupla/array do lado esquerdo e do lado direito.

Os tipos a seguir podem ser comparados:

* números e decimais
* strings e strings de tamanho fixo
* datas
* datas com horas
* tuplas (comparação lexicográfica)
* arrays (comparação lexicográfica)

<Note>
  As strings são comparadas byte a byte. Isso pode levar a resultados inesperados se uma das strings contiver caracteres de vários bytes codificados em UTF-8.
  Uma string S1 que tem outra string S2 como prefixo é considerada mais longa que S2.
</Note>

{/*AUTOGENERATED_START*/}

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

Introduzido em: v1.1.0

Compara dois valores para verificar se são iguais.

**Sintaxe**

```sql theme={null}
equals(a, b)
        -- a = b
        -- a == b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for igual a `b`; caso contrário, `0` [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 1 = 1, 1 = 2;
```

```response title=Response theme={null}
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘
```

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

Introduzido em: v1.1.0

Igual a `in`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.

**Sintaxe**

```sql theme={null}
globalIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Igual a `in`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
globalIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Igual a `notIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.

**Sintaxe**

```sql theme={null}
globalNotIn(x, set)
```

**Argumentos**

* `x` — Valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto e 0 caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Igual a `notIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
globalNotIn(x, set)
```

**Argumentos**

* `x` — Valor a ser verificado. - `set` — Conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Igual a `notNullIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.

**Sintaxe**

```sql theme={null}
globalNotNullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto, 0 caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Igual a `notNullIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
globalNotNullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto; caso contrário, retorna 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Igual a `nullIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.

**Sintaxe**

```sql theme={null}
globalNullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Igual a `nullIn`, mas usa a distribuição global do conjunto em consultas distribuídas. O conjunto é enviado a todos os servidores remotos.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
globalNullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Compara dois valores para determinar se um é maior que o outro.

**Sintaxe**

```sql theme={null}
greater(a, b)
    -- a > b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for maior que `b`; caso contrário, `0` [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 2 > 1, 1 > 2;
```

```response title=Response theme={null}
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘
```

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

Introduzido em: v1.1.0

Compara dois valores para verificar se um é maior ou igual ao outro.

**Sintaxe**

```sql theme={null}
greaterOrEquals(a, b)
    -- a >= b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for maior ou igual a `b`; caso contrário, `0` [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 2 >= 1, 2 >= 2, 1 >= 2;
```

```response title=Response theme={null}
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘
```

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

Introduzido em: v1.1.0

Verifica se o operando à esquerda pertence ao conjunto do operando à direita. Retorna 1 se pertencer; caso contrário, 0. Valores `NULL` no operando à esquerda são ignorados (tratados como não pertencentes ao conjunto).

**Sintaxe**

```sql theme={null}
in(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto, 0 caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Verifica se o operando à esquerda pertence ao conjunto do operando à direita. Retorna 1 se pertencer; caso contrário, 0. Valores NULL no operando à esquerda são ignorados (tratados como não pertencentes ao conjunto).
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
in(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 1 IN (1, 2, 3)
```

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

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

Introduzido em: v25.11.0

Executa uma comparação de "diferente de" com tratamento seguro de NULL entre dois valores.
Retorna `true` se os valores forem distintos (não iguais), inclusive quando um valor for NULL e o outro não.
Retorna `false` se os valores forem iguais ou se ambos forem NULL.

**Sintaxe**

```sql theme={null}
isDistinctFrom(x, y)
```

**Argumentos**

* `x` — Primeiro valor a ser comparado. Pode ser qualquer tipo de dado do ClickHouse. [`Any`](/pt-BR/reference/data-types)
* `y` — Segundo valor a ser comparado. Pode ser qualquer tipo de dado do ClickHouse. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna `true` se os dois valores forem diferentes, tratando NULLs como comparáveis:

* Retorna `true` se x != y.
  * Retorna `true` se exatamente um de x ou y for NULL.
  * Retorna `false` se x = y ou se x e y forem ambos NULL. [`Bool`](/pt-BR/reference/data-types/boolean)

**Exemplos**

**Uso básico com números e NULLs**

```sql title=Query theme={null}
SELECT
    isDistinctFrom(1, 2) AS result_1,
    isDistinctFrom(1, 1) AS result_2,
    isDistinctFrom(NULL, 1) AS result_3,
    isDistinctFrom(NULL, NULL) AS result_4
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

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

Introduzido em: v23.8.0

Realiza uma comparação de "igualdade" com segurança para NULL entre dois valores.
Retorna `true` se os valores forem iguais, inclusive quando ambos forem NULL.
Retorna `false` se os valores forem diferentes ou se exatamente um deles for NULL.

**Sintaxe**

```sql theme={null}
isNotDistinctFrom(x, y)
```

**Argumentos**

* `x` — Primeiro valor a ser comparado. Pode ser qualquer tipo de dado do ClickHouse. [`Any`](/pt-BR/reference/data-types)
* `y` — Segundo valor a ser comparado. Pode ser qualquer tipo de dado do ClickHouse. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna `true` se os dois valores forem iguais, tratando NULLs como comparáveis:

* Retorna `true` se x = y.
  * Retorna `true` se x e y forem NULL.
  * Retorna `false` se x != y ou se exatamente um entre x e y for NULL. [`Bool`](/pt-BR/reference/data-types/boolean)

**Exemplos**

**Uso básico com números e NULLs**

```sql title=Query theme={null}
SELECT
    isNotDistinctFrom(1, 1) AS result_1,
    isNotDistinctFrom(1, 2) AS result_2,
    isNotDistinctFrom(NULL, NULL) AS result_3,
    isNotDistinctFrom(NULL, 1) AS result_4
```

```response title=Response theme={null}
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘
```

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

Introduzido em: v1.1.0

Compara dois valores para verificar se um é menor que o outro.

**Sintaxe**

```sql theme={null}
less(a, b)
    -- a < b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for menor que `b`; caso contrário, `0` [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 1 < 2, 2 < 1;
```

```response title=Response theme={null}
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘
```

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

Introduzido em: v1.1.0

Compara dois valores para verificar se um é menor ou igual ao outro.

**Sintaxe**

```sql theme={null}
lessOrEquals(a, b)
-- a <= b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for menor ou igual a `b`; caso contrário, `0` [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 1 <= 2, 2 <= 2, 3 <= 2;
```

```response title=Response theme={null}
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘
```

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

Introduzido em: v1.1.0

Compara dois valores para verificar se são diferentes.

**Sintaxe**

```sql theme={null}
notEquals(a, b)
    -- a != b
    -- a <> b
```

**Argumentos**

* `a` — Primeiro valor.<sup>[\*](#comparison-rules)</sup> - `b` — Segundo valor.<sup>[\*](#comparison-rules)</sup>

**Valor retornado**

Retorna `1` se `a` for diferente de `b`; caso contrário, `0`. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT 1 != 2, 1 != 1;
```

```response title=Response theme={null}
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘
```

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

Introduzido na versão: v1.1.0

Verifica se o operando à esquerda NÃO pertence ao conjunto do operando à direita. Retorna 1 se não pertencer ao conjunto; caso contrário, retorna 0. Valores NULL no operando à esquerda são ignorados.

**Sintaxe**

```sql theme={null}
notIn(x, set)
```

**Argumentos**

* `x` — Valor a ser verificado. - `set` — Conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto, 0 caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Verifica se o operando esquerdo NÃO pertence ao conjunto do operando direito. Retorna 1 se não estiver no conjunto; caso contrário, retorna 0. Valores NULL no operando esquerdo são desconsiderados.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
notIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT 4 NOT IN (1, 2, 3)
```

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

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

Introduzido em: v1.1.0

Verifica se o operando à esquerda NÃO faz parte do conjunto do operando à direita. Diferentemente de `notIn`, os valores NULL não são ignorados: NULL é comparado com os elementos do conjunto, e NULL = NULL resulta em true.

**Sintaxe**

```sql theme={null}
notNullIn(x, set)
```

**Argumentos**

* `x` — O valor a verificar. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se `x` não estiver no conjunto, 0 caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Verifica se o operando à esquerda NÃO pertence ao conjunto do operando à direita. Diferentemente de `notIn`, os valores NULL não são ignorados: NULL é comparado com os elementos do conjunto, e NULL = NULL resulta em true.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
notNullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x não estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT notNullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido em: v1.1.0

Verifica se o operando à esquerda é um membro do conjunto do operando à direita. Diferentemente de `in`, os valores NULL não são ignorados: NULL é comparado com os elementos do conjunto, e NULL = NULL é avaliado como true.

**Sintaxe**

```sql theme={null}
nullIn(x, set)
```

**Argumentos**

* `x` — O valor a verificar. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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

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

Introduzido na versão: v1.1.0

Verifica se o operando à esquerda é membro do conjunto do operando à direita. Diferentemente de `in`, os valores NULL não são ignorados: NULL é comparado com os elementos do conjunto, e NULL = NULL é avaliado como true.
Esta é a variante IgnoreSet usada para análise de tipos sem criar o conjunto.

**Sintaxe**

```sql theme={null}
nullIn(x, set)
```

**Argumentos**

* `x` — O valor a ser verificado. - `set` — O conjunto de valores.

**Valor retornado**

Retorna 1 se x estiver no conjunto; caso contrário, 0. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT nullIn(NULL, tuple(1, NULL))
```

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