Catégories :

Fonctions d’expressions conditionnelles

COALESCE

Renvoie la première expression non NULL parmi ses arguments, ou NULL si tous ses arguments sont NULL.

Syntaxe

COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
Copy

Notes sur l’utilisation

  • Snowflake effectue une conversion implicite des arguments pour les rendre compatibles. Par exemple, si l’une des expressions en entrée est un type numérique, le type de retour est également un type numérique. Autrement dit, SELECT COALESCE('17', 1); convertit d’abord la valeur VARCHAR '17' en valeur NUMBER 17, puis renvoie la première valeur non-NULL.

    Lorsque la conversion n’est pas possible, la conversion implicite échoue. Par exemple, SELECT COALESCE('foo', 1); renvoie une erreur, car la valeur VARCHAR 'foo' ne peut pas être convertie en valeur NUMBER.

    We recommend passing in arguments of the same type or explicitly converting arguments if needed.

  • Lorsque la conversion implicite convertit une valeur non numérique en valeur numérique, le résultat est une valeur de type NUMBER(18,5).

    Pour les arguments numériques de type chaîne qui ne sont pas des constantes, si NUMBER(18,5) n’est pas suffisant pour représenter la valeur numérique, vous devez convertir l’argument en un type qui peut représenter la valeur.

Détails du classement

  • The collation specifications of all input arguments must be compatible.

  • The comparisons follow the collation based on the input arguments” collations and precedences.

  • The collation of the result of the function is the highest-precedence collation of the inputs.

Exemples

L’exemple suivant montre les valeurs dans trois colonnes, puis le résultat lorsque la fonction COALESCE est appliquée aux trois colonnes :

SELECT column1,
       column2,
       column3,
       COALESCE(column1, column2, column3) AS coalesce_result
  FROM (values
    (1,    2,    3   ),
    (null, 2,    3   ),
    (null, null, 3   ),
    (null, null, null),
    (1,    null, 3   ),
    (1,    null, null),
    (1,    2,    null)
  ) v;
Copy
+---------+---------+---------+-----------------+
| COLUMN1 | COLUMN2 | COLUMN3 | COALESCE_RESULT |
|---------+---------+---------+-----------------|
|       1 |       2 |       3 |               1 |
|    NULL |       2 |       3 |               2 |
|    NULL |    NULL |       3 |               3 |
|    NULL |    NULL |    NULL |            NULL |
|       1 |    NULL |       3 |               1 |
|       1 |    NULL |    NULL |               1 |
|       1 |       2 |    NULL |               1 |
+---------+---------+---------+-----------------+