Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para trabajar con valores que admiten NULL

assumeNotNull

Introducida en: v1.1.0

Devuelve el valor correspondiente no Nullable para un valor de tipo Nullable. Si el valor original es NULL, puede devolverse un resultado arbitrario.

Vea también: las funciones ifNull y coalesce.

Sintaxis

assumeNotNull(x)

Argumentos

  • x — El valor original de cualquier tipo Nullable. Nullable(T)

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

Ejemplos

Ejemplo de uso

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 t_null;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘

coalesce

Introducido en: v1.1.0

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

Sintaxis

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

Valor devuelto

Devuelve el primer argumento que no es NULL, o NULL si todos los argumentos son NULL. Any o NULL

Ejemplos

Ejemplo de uso

-- Consider a list of contacts that may specify multiple ways to contact a customer.

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);

-- The mail and phone fields are of type String, but the telegram field is UInt32 so it needs to be converted to String.

-- Get the first available contact method for the customer from the contact list

SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;
┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                                 │
│ client 2 │ ᴺᵁᴸᴸ                                                      │
└──────────┴───────────────────────────────────────────────────────────┘

firstNonDefault

Introducido en: v25.9.0

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

Sintaxis

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

SELECT firstNonDefault(0, 1, 2)
1

cadenas

SELECT firstNonDefault('', 'hello', 'world')
hello

valores NULL

SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
1

cero Nullable

SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
0

ifNull

Introducida en: v1.1.0

Devuelve un valor alternativo si el primer argumento es NULL.

Sintaxis

ifNull(x, alt)

Argumentos

  • x — El valor que se va a comprobar para ver si es NULL. Any
  • alt — El valor que devuelve la función si x es NULL. Any

Valor devuelto

Devuelve el valor de x si no es NULL; de lo contrario, alt. Any

Ejemplos

Ejemplo de uso

SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘

isNotNull

Introducido en: v1.1.0

Comprueba si el argumento no es NULL.

Véase también: operador IS NOT NULL.

Sintaxis

isNotNull(x)

Argumentos

  • x — Un valor de un tipo de dato no compuesto. Any

Valor devuelto

Devuelve 1 si x no es NULL; de lo contrario, 0. UInt8

Ejemplos

Ejemplo de uso

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);
┌─x─┐
│ 2 │
└───┘

isNull

Introducido en: v1.1.0

Comprueba si el argumento es NULL.

Véase también: operador IS NULL.

Sintaxis

isNull(x)

Argumentos

  • x — Un valor de un tipo de dato no compuesto. Any

Valor devuelto

Devuelve 1 si x es NULL; en caso contrario, 0. UInt8

Ejemplos

Ejemplo de uso

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);
┌─x─┐
│ 1 │
└───┘

isNullable

Introducido en: v22.7.0

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

Sintaxis

isNullable(x)

Argumentos

  • x — Un valor de cualquier tipo de dato. Any

Valor devuelto

Devuelve 1 si x es del tipo de dato Nullable; de lo contrario, 0. UInt8

Ejemplos

Ejemplo de uso

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;
┌─isNullable(ordinary_col)─┬─isNullable(nullable_col)─┐
│                        0 │                        1 │
│                        0 │                        1 │
│                        0 │                        1 │
└──────────────────────────┴──────────────────────────┘

isZeroOrNull

Introducido en: v20.3.0

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

Sintaxis

isZeroOrNull(x)

Argumentos

  • x — Un valor numérico. UInt

Valor devuelto

Devuelve 1 si x es NULL o es igual a cero; en caso contrario, 0. UInt8/16/32/64 o Float32/Float64

Ejemplos

Ejemplo de uso

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);
┌─x─┐
│ 1 │
│ 2 │
└───┘

nullIf

Introducido en: v1.1.0

Devuelve NULL si ambos argumentos son iguales.

Sintaxis

nullIf(x, y)

Argumentos

  • x — El primer valor. Any
  • y — El segundo valor. Any

Valor devuelto

Devuelve NULL si ambos argumentos son iguales; en caso contrario, devuelve el primer argumento. NULL o Nullable(x)

Ejemplos

Ejemplo de uso

SELECT nullIf(1, 1), nullIf(1, 2);
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘

toNullable

Introducido en: v1.1.0

Convierte el tipo del argumento dado en Nullable.

Sintaxis

toNullable(x)

Argumentos

  • x — Un valor de cualquier tipo no compuesto. Any

Valor devuelto

Devuelve el valor de entrada, pero con tipo Nullable. Nullable(Any)

Ejemplos

Ejemplo de uso

SELECT toTypeName(10), toTypeName(toNullable(10));
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
Navigation