Fonctions pour travailler avec des agrégats nullables 

isNull 

Vérifie si l'argument est NULL.

isNull(x)

Paramètre

  • x — A value with a non-compound data type.

Valeur renvoyée

  • 1 si x être NULL.
  • 0 si x n'est pas NULL.

Exemple

Table d'entrée

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

Requête

SELECT x FROM t_null WHERE isNull(y)
┌─x─┐
│ 1 │
└───┘

isNotNull 

Vérifie si l'argument est NULL.

isNotNull(x)

Paramètre:

  • x — A value with a non-compound data type.

Valeur renvoyée

  • 0 si x être NULL.
  • 1 si x n'est pas NULL.

Exemple

Table d'entrée

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

Requête

SELECT x FROM t_null WHERE isNotNull(y)
┌─x─┐
│ 2 │
└───┘

fusionner 

Vérifie de gauche à droite si NULL les arguments ont été passés et renvoie le premier non-NULL argument.

coalesce(x,...)

Paramètre:

  • N'importe quel nombre de paramètres d'un type non composé. Tous les paramètres doivent être compatibles par type de données.

Valeurs renvoyées

  • Le premier non-NULL argument.
  • NULL si tous les arguments sont NULL.

Exemple

Considérez une liste de contacts qui peuvent spécifier plusieurs façons de contacter un client.

┌─name─────┬─mail─┬─phone─────┬──icq─┐
│ client 1 │ ᴺᵁᴸᴸ │ 123-45-67 │  123 │
│ client 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ      │ ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴──────┘

Le mail et phone les champs sont de type Chaîne de caractères, mais la icq le terrain est UInt32, de sorte qu'il doit être converti en String.

Obtenir la première méthode de contact pour le client à partir de la liste de contacts:

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

ifNull 

Renvoie une valeur alternative si l'argument principal est NULL.

ifNull(x,alt)

Paramètre:

  • x — The value to check for NULL.
  • alt — The value that the function returns if x être NULL.

Valeurs renvoyées

  • Valeur x, si x n'est pas NULL.
  • Valeur alt, si x être NULL.

Exemple

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

nullIf 

Retourner NULL si les arguments sont égaux.

nullIf(x, y)

Paramètre:

x, y — Values for comparison. They must be compatible types, or ClickHouse will generate an exception.

Valeurs renvoyées

  • NULL si les arguments sont égaux.
  • Le x valeur, si les arguments ne sont pas égaux.

Exemple

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

assumeNotNull 

Résultats dans une valeur de type Nullable pour un non- Nullable si la valeur n'est pas NULL.

assumeNotNull(x)

Paramètre:

  • x — The original value.

Valeurs renvoyées

  • La valeur d'origine du non-Nullable type, si elle n'est pas NULL.
  • La valeur par défaut pour le non-Nullable Tapez si la valeur d'origine était NULL.

Exemple

Envisager l' t_null table.

SHOW CREATE TABLE t_null
┌─statement─────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_null ( x Int8,  y Nullable(Int8)) ENGINE = TinyLog │
└───────────────────────────────────────────────────────────────────────────┘
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

Appliquer le assumeNotNull la fonction de la y colonne.

SELECT assumeNotNull(y) FROM t_null
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
SELECT toTypeName(assumeNotNull(y)) FROM t_null
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘

toNullable 

Convertit le type d'argument en Nullable.

toNullable(x)

Paramètre:

  • x — The value of any non-compound type.

Valeur renvoyée

  • La valeur d'entrée avec un Nullable type.

Exemple

SELECT toTypeName(10)
┌─toTypeName(10)─┐
│ UInt8          │
└────────────────┘
SELECT toTypeName(toNullable(10))
┌─toTypeName(toNullable(10))─┐
│ Nullable(UInt8)            │
└────────────────────────────┘

Article Original

Rating: 2.5 - 2 votes

Was this content helpful?
★★★☆☆