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

> Documentación de funciones para trabajar con valores que admiten NULL

# Funciones para trabajar con valores que admiten NULL

{/*AUTOGENERATED_START*/}

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

Introducida en: v1.1.0

Devuelve el valor correspondiente no `Nullable` para un valor de tipo [`Nullable`](/es/reference/data-types/nullable).
Si el valor original es `NULL`, puede devolverse un resultado arbitrario.

Vea también: las funciones [`ifNull`](#ifNull) y [`coalesce`](#coalesce).

**Sintaxis**

```sql theme={null}
assumeNotNull(x)
```

**Argumentos**

* `x` — El valor original de cualquier tipo Nullable. [`Nullable(T)`](/es/reference/data-types/nullable)

**Valor devuelto**

Devuelve el valor no Nullable si el valor original no era `NULL`; de lo contrario, devuelve un valor arbitrario si el valor de entrada es `NULL`. [`Any`](/es/reference/data-types)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE t_null (x Int8, y Nullable(Int8))
ENGINE=MergeTree()
ORDER BY x;

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT assumeNotNull(y) FROM table;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
```

```response title=Response theme={null}
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘
```

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

Introducido en: v1.1.0

Devuelve el argumento no `NULL` situado más a la izquierda.

**Sintaxis**

```sql theme={null}
coalesce(x[, y, ...])
```

**Argumentos**

* `x[, y, ...]` — Cualquier número de parámetros de tipo no compuesto. Todos los parámetros deben ser de tipos de datos compatibles entre sí. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve el primer argumento que no es `NULL`, o `NULL` si todos los argumentos son `NULL`. [`Any`](/es/reference/data-types) o [`NULL`](/es/reference/syntax#null)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
-- Considerar una lista de contactos que puede especificar múltiples formas de contactar a un cliente.

CREATE TABLE aBook
(
    name String,
    mail Nullable(String),
    phone Nullable(String),
    telegram Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO aBook VALUES ('client 1', NULL, '123-45-67', 123), ('client 2', NULL, NULL, NULL);

-- Los campos mail y phone son de tipo String, pero el campo telegram es UInt32, por lo que debe convertirse a String.

-- Obtener el primer método de contacto disponible para el cliente de la lista de contactos

SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;
```

```response title=Response theme={null}
┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                                 │
│ client 2 │ ᴺᵁᴸᴸ                                                      │
└──────────┴───────────────────────────────────────────────────────────┘
```

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

Introducido en: v25.9.0

Devuelve el primer valor distinto del predeterminado de un conjunto de argumentos

**Sintaxis**

```sql theme={null}
firstNonDefault(arg1[, arg2[ ...]])
```

**Argumentos**

* `arg1` — El primer argumento que se debe comprobar - `arg2` — El segundo argumento que se debe comprobar - `...` — Argumentos adicionales que se deben comprobar

**Valor devuelto**

El tipo de resultado es el supertipo de todos los argumentos

**Ejemplos**

**enteros**

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

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

**cadenas**

```sql title=Query theme={null}
SELECT firstNonDefault('', 'hello', 'world')
```

```response title=Response theme={null}
'hello'
```

**valores NULL**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
```

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

**cero Nullable**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
```

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

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

Introducida en: v1.1.0

Devuelve un valor alternativo si el primer argumento es `NULL`.

**Sintaxis**

```sql theme={null}
ifNull(x, alt)
```

**Argumentos**

* `x` — El valor que se va a comprobar para ver si es `NULL`. [`Any`](/es/reference/data-types)
* `alt` — El valor que devuelve la función si `x` es `NULL`. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve el valor de `x` si no es `NULL`; de lo contrario, `alt`. [`Any`](/es/reference/data-types)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
```

```response title=Response theme={null}
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘
```

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

Introducido en: v1.1.0

Comprueba si el argumento no es `NULL`.

Véase también: operador [`IS NOT NULL`](/es/reference/operators#is_not_null).

**Sintaxis**

```sql theme={null}
isNotNull(x)
```

**Argumentos**

* `x` — Un valor de un tipo de dato no compuesto. [`Any`](/es/reference/data-types)

**Valor devuelto**

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

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT x FROM t_null WHERE isNotNull(y);
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

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

Introducido en: v1.1.0

Comprueba si el argumento es `NULL`.

Véase también: operador [`IS NULL`](/es/reference/operators#is_null).

**Sintaxis**

```sql theme={null}
isNull(x)
```

**Argumentos**

* `x` — Un valor de un tipo de dato no compuesto. [`Any`](/es/reference/data-types)

**Valor devuelto**

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

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT x FROM t_null WHERE isNull(y);
```

```response title=Response theme={null}
┌─x─┐
│ 1 │
└───┘
```

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

Introducido en: v22.7.0

Comprueba si el tipo de datos del argumento es `Nullable` (es decir, si permite valores `NULL`).

**Sintaxis**

```sql theme={null}
isNullable(x)
```

**Argumentos**

* `x` — Un valor de cualquier tipo de dato. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve `1` si `x` es del tipo de dato `Nullable`; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE tab (
    ordinary_col UInt32,
    nullable_col Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO tab (ordinary_col, nullable_col) VALUES (1,1), (2, 2), (3,3);
SELECT isNullable(ordinary_col), isNullable(nullable_col) FROM tab;
```

```response title=Response theme={null}
┌───isNullable(ordinary_col)──┬───isNullable(nullable_col)──┐
│                           0 │                           1 │
│                           0 │                           1 │
│                           0 │                           1 │
└─────────────────────────────┴─────────────────────────────┘
```

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

Introducido en: v20.3.0

Comprueba si el argumento es igual a cero (`0`) o `NULL`.

**Sintaxis**

```sql theme={null}
isZeroOrNull(x)
```

**Argumentos**

* `x` — Un valor numérico. [`UInt`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve `1` si `x` es `NULL` o es igual a cero; en caso contrario, `0`. [`UInt8/16/32/64`](/es/reference/data-types/int-uint) o [`Float32/Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE t_null
(
  x Int32,
  y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO t_null VALUES (1, NULL), (2, 0), (3, 3);

SELECT x FROM t_null WHERE isZeroOrNull(y);
```

```response title=Response theme={null}
┌─x─┐
│ 1 │
│ 2 │
└───┘
```

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

Introducido en: v1.1.0

Devuelve `NULL` si ambos argumentos son iguales.

**Sintaxis**

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

**Argumentos**

* `x` — El primer valor. [`Any`](/es/reference/data-types)
* `y` — El segundo valor. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve `NULL` si ambos argumentos son iguales; en caso contrario, devuelve el primer argumento. [`NULL`](/es/reference/syntax#null) o [`Nullable(x)`](/es/reference/data-types/nullable)

**Ejemplos**

**Ejemplo de uso**

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

```response title=Response theme={null}
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘
```

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

Introducido en: v1.1.0

Convierte el tipo del argumento dado en `Nullable`.

**Sintaxis**

```sql theme={null}
toNullable(x)
```

**Argumentos**

* `x` — Un valor de cualquier tipo no compuesto. [`Any`](/es/reference/data-types)

**Valor devuelto**

Devuelve el valor de entrada, pero con tipo `Nullable`. [`Nullable(Any)`](/es/reference/data-types/nullable)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT toTypeName(10), toTypeName(toNullable(10));
```

```response title=Response theme={null}
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
```
