> ## 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.

> Documentación sobre las funciones de comparación

# Funciones de comparación

<div id="comparison-rules">
  ## Reglas de comparación
</div>

Las funciones de comparación que aparecen a continuación devuelven `0` o `1` y son de tipo [UInt8](/es/reference/data-types/int-uint). Solo se pueden comparar valores dentro del mismo grupo
(p. ej., `UInt16` y `UInt64`), pero no entre grupos distintos (p. ej., `UInt16` y `DateTime`).
Es posible comparar números y cadenas, así como cadenas con fechas y fechas con horas.
En el caso de tuplas y arrays, la comparación es lexicográfica, lo que significa que se compara cada
elemento correspondiente de la tupla/array del lado izquierdo con el del lado derecho.

Se pueden comparar los siguientes tipos:

* números y decimales
* cadenas y cadenas de longitud fija
* fechas
* fechas con horas
* tuplas (comparación lexicográfica)
* arrays (comparación lexicográfica)

<Note>
  Las cadenas se comparan byte a byte. Esto puede dar lugar a resultados inesperados si una de las cadenas contiene caracteres multibyte codificados en UTF-8.
  Una cadena S1 que tiene otra cadena S2 como prefijo se considera más larga que S2.
</Note>

{/*AUTOGENERATED_START*/}

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

Introducido en: v1.1.0

Compara dos valores para comprobar si son iguales.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` es igual a `b`; en caso contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Igual que `in`, pero utiliza la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se va a comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si `x` está en el conjunto y 0 en caso contrario. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `in`, pero usa la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.
Esta es la variante IgnoreSet que se utiliza para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `notIn`, pero utiliza la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se comprobará. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; de lo contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `notIn`, pero usa la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.
Esta es la variante IgnoreSet que se usa para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se comprobará. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no pertenece al conjunto, 0 en caso contrario. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `notNullIn`, pero utiliza la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se va a comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `notNullIn`, pero utiliza la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.
Esta es la variante IgnoreSet que se usa para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; de lo contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Lo mismo que `nullIn`, pero usa la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se va a comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si `x` está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Igual que `nullIn`, pero usa la distribución global de conjuntos en consultas distribuidas. El conjunto se envía a todos los servidores remotos.
Se trata de la variante IgnoreSet, utilizada para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Compara dos valores para determinar si uno es mayor que el otro.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` es mayor que `b`; de lo contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Compara dos valores para determinar si uno es mayor o igual que el otro.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` es mayor o igual que `b`; de lo contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo pertenece al conjunto del operando derecho. Devuelve 1 si es así; de lo contrario, 0. Los valores NULL del operando izquierdo se omiten (se tratan como si no pertenecieran al conjunto).

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x está en el conjunto; de lo contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo pertenece al conjunto del operando derecho. Devuelve 1 si es así; de lo contrario, 0. Los valores NULL del operando izquierdo se omiten (se tratan como si no pertenecieran al conjunto).
Esta es la variante IgnoreSet que se usa para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x pertenece al conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v25.11.0

Realiza una comparación de "distinto de" con seguridad ante NULL entre dos valores.
Devuelve `true` si los valores son distintos (no iguales), incluso cuando un valor es NULL y el otro no.
Devuelve `false` si los valores son iguales o si ambos son NULL.

**Sintaxis**

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

**Argumentos**

* `x` — Primer valor que se comparará. Puede ser cualquier tipo de dato de ClickHouse. [`Any`](/es/reference/data-types)
* `y` — Segundo valor que se comparará. Puede ser cualquier tipo de dato de ClickHouse. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve `true` si los dos valores son diferentes, considerando los NULL como comparables:

* Devuelve `true` si x != y.
  * Devuelve `true` si exactamente uno de x o y es NULL.
  * Devuelve `false` si x = y o si tanto x como y son NULL. [`Bool`](/es/reference/data-types/boolean)

**Ejemplos**

**Uso básico con números y NULL**

```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>

Introducido en: v23.8.0

Realiza una comparación de "igualdad" con seguridad ante NULL entre dos valores.
Devuelve `true` si los valores son iguales, incluso cuando ambos son NULL.
Devuelve `false` si los valores son diferentes o si exactamente uno de ellos es NULL.

**Sintaxis**

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

**Argumentos**

* `x` — Primer valor para comparar. Puede ser cualquier tipo de dato de ClickHouse. [`Any`](/es/reference/data-types)
* `y` — Segundo valor para comparar. Puede ser cualquier tipo de dato de ClickHouse. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve `true` si los dos valores son iguales, tratando los NULL como comparables:

* Devuelve `true` si x = y.
  * Devuelve `true` si tanto x como y son NULL.
  * Devuelve `false` si x != y, o si exactamente uno de los dos es NULL. [`Bool`](/es/reference/data-types/boolean)

**Ejemplos**

**Uso básico con números y NULL**

```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>

Introducido en: v1.1.0

Compara dos valores para determinar si uno es menor que el otro.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` es menor que `b`; en caso contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Compara dos valores para determinar si uno es menor o igual que el otro.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` es menor o igual a `b`; de lo contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Compara dos valores para comprobar si son distintos.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `1` si `a` no es igual a `b`; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo NO pertenece al conjunto del operando derecho. Devuelve 1 si no pertenece al conjunto; en caso contrario, 0. Los valores NULL del operando izquierdo se omiten.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo NO pertenece al conjunto del operando derecho. Devuelve 1 si no está en el conjunto y 0 en caso contrario. Los valores NULL del operando izquierdo se omiten.
Esta es la variante IgnoreSet que se utiliza para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se comprobará. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo NO pertenece al conjunto del operando derecho. A diferencia de `notIn`, los valores NULL no se omiten: NULL se compara con los elementos del conjunto, y NULL = NULL se evalúa como true.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se va a comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x no está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo NO pertenece al conjunto del operando derecho. A diferencia de `notIn`, los valores NULL no se omiten: NULL se compara con los elementos del conjunto, y NULL = NULL se evalúa como true.
Esta es la variante IgnoreSet que se utiliza para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si `x` no está en el conjunto; 0 en caso contrario. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo pertenece al conjunto del operando derecho. A diferencia de `in`, los valores NULL no se omiten: NULL se compara con los elementos del conjunto, y NULL = NULL se evalúa como true.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se comprueba. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x pertenece al conjunto; de lo contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**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>

Introducido en: v1.1.0

Comprueba si el operando izquierdo pertenece al conjunto del operando derecho. A diferencia de `in`, los valores NULL no se omiten: NULL se compara con los elementos del conjunto, y NULL = NULL se evalúa como true.
Esta es la variante IgnoreSet utilizada para el análisis de tipos sin crear el conjunto.

**Sintaxis**

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

**Argumentos**

* `x` — El valor que se debe comprobar. - `set` — El conjunto de valores.

**Valor devuelto**

Devuelve 1 si x está en el conjunto; en caso contrario, 0. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Uso básico**

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

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