- Catégories :
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.searchN
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
result
correspondant. Si plusieurs expressions de recherche correspondent, seul le résultat de la première correspondance est renvoyé.resultN
Les résultats sont les valeurs qui seront renvoyées si l’une des expressions de recherche correspond à l’expression de sélection.
default
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 queUNION
,INTERSECT
,EXCEPT
etMINUS
. 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 | +---------+---------------+