> ## 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 del modificador de tipo de dato Nullable en ClickHouse

# Nullable(T)

Permite almacenar un marcador especial ([NULL](/es/reference/syntax)) que denota un "valor ausente" junto con los valores normales permitidos por `T`. Por ejemplo, una columna de tipo `Nullable(Int8)` puede almacenar valores de tipo `Int8`, y las filas que no tengan valor almacenarán `NULL`.

`T` no puede ser ninguno de los siguientes tipos de datos compuestos:

* [Array](/es/reference/data-types/array) — No compatible
* [Map](/es/reference/data-types/map) — No compatible
* [Tuple](/es/reference/data-types/tuple) — Soporte experimental disponible\*

Sin embargo, los tipos de datos compuestos **pueden contener** valores de tipo `Nullable`, p. ej., `Array(Nullable(Int8))` o `Tuple(Nullable(String), Nullable(Int64))`.

<Info>
  **Experimental: Tuples Nullable**

  * [Nullable(Tuple(...))](/es/reference/data-types/tuple#nullable-tuple) es compatible cuando `allow_experimental_nullable_tuple_type = 1` está habilitado.
</Info>

Un campo de tipo `Nullable` no puede incluirse en los índices de tablas.

`NULL` es el valor predeterminado para cualquier tipo `Nullable`, a menos que se especifique lo contrario en la configuración del servidor de ClickHouse.

<div id="storage-features">
  ## Características de almacenamiento
</div>

Para almacenar valores de tipo `Nullable` en una columna de una tabla, ClickHouse utiliza un archivo independiente con máscaras `NULL`, además del archivo normal con los valores. Las entradas del archivo de máscaras permiten a ClickHouse distinguir entre `NULL` y el valor predeterminado del tipo de dato correspondiente para cada fila de la tabla. Debido a este archivo adicional, una columna `Nullable` consume más espacio de almacenamiento que una columna normal equivalente.

<Note>
  El uso de `Nullable` casi siempre afecta negativamente al rendimiento; téngalo en cuenta al diseñar sus bases de datos.
</Note>

<div id="finding-null">
  ## Cómo encontrar NULL
</div>

Es posible localizar valores `NULL` en una columna usando la subcolumna `null` sin necesidad de leer la columna completa. Devuelve `1` si el valor correspondiente es `NULL` y `0` en caso contrario.

**Ejemplo**

```sql title="Query" theme={null}
CREATE TABLE nullable (`n` Nullable(UInt32)) ENGINE = MergeTree ORDER BY tuple();

INSERT INTO nullable VALUES (1) (NULL) (2) (NULL);

SELECT n.null FROM nullable;
```

```text title="Response" theme={null}
┌─n.null─┐
│      0 │
│      1 │
│      0 │
│      1 │
└────────┘
```

<div id="usage-example">
  ## Ejemplo de uso
</div>

```sql theme={null}
CREATE TABLE t_null(x Int8, y Nullable(Int8)) ENGINE TinyLog
```

```sql theme={null}
INSERT INTO t_null VALUES (1, NULL), (2, 3)
```

```sql theme={null}
SELECT x + y FROM t_null
```

```text theme={null}
┌─plus(x, y)─┐
│       ᴺᵁᴸᴸ │
│          5 │
└────────────┘
```
