Catégories :

Fonctions d’expressions conditionnelles

DECODE

Compare l’expression sélectionnée avec chaque expression de recherche dans l’ordre. Dès qu’une expression de recherche correspond à l’expression de sélection, l’expression de résultat correspondante est renvoyée.

Note

DECODE dans Snowflake est différent de la fonction DECODE dans PostgreSQL, qui convertit les données en différents codages.

Syntaxe

DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )

Arguments

expr

Il s’agit de l’expression « de sélection ». Les « expressions de recherche » sont comparées à cette expression de sélection. S’il existe une correspondance, alors DECODE renvoie le résultat qui correspond à cette expression de recherche. L’expression de sélection est généralement une colonne, mais peut être une expression de sous-requête, littérale ou autre.

recherche#

Les expressions de recherche indiquent les valeurs à comparer avec l’expression de sélection. Si l’une de ces expressions de recherche correspond, la fonction renvoie le résultat correspondant. Si plusieurs expressions de recherche correspondent, seul le résultat de la première correspondance est renvoyé.

résultat#

Les résultats sont les valeurs qui seront renvoyées si l’une des expressions de recherche correspond à l’expression de sélection.

par_défaut

Si une valeur par défaut facultative est spécifiée et si aucune des expressions de recherche ne correspond à l’expression de sélection, DECODE renvoie cette valeur par défaut.

Notes sur l’utilisation

  • Notez que, contrairement à CASE, une valeur NULL dans l’expression sélectionnée correspond à une valeur NULL dans les expressions de recherche.

  • expr peut inclure des opérateurs Set, tels que UNION, INTERSECT, EXCEPT et MINUS. Lorsque vous utilisez des opérateurs Set, assurez-vous que les types de données sont compatibles. Pour plus d’informations, voir Notes générales sur l’utilisation dans la rubrique Opérateurs Set.

Détails du classement

  • Les spécifications de classement de l’expression sélectionnée et des expressions de recherche doivent toutes être compatibles.

  • La valeur renvoyée par la fonction conserve la spécification de classement du résultat avec le classement le plus élevé -préséance.

Exemples

Créer une table et insérer des lignes :

CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES 
    (1),
    (2),
    (NULL),
    (4);

Exemple avec une valeur par défaut 'other' (notez que NULL est égal à NULL) :

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-', 
                       'other'
                      ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | other         |
+---------+---------------+

Exemple sans valeur par défaut (notez que la valeur qui ne correspond pas renvoie NULL) :

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-'
                       ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | NULL          |
+---------+---------------+