- 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¶
exprIl 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
DECODErenvoie 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.searchNLes 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
resultcorrespondant. Si plusieurs expressions de recherche correspondent, seul le résultat de la première correspondance est renvoyé.resultNLes résultats sont les valeurs qui seront renvoyées si l’une des expressions de recherche correspond à l’expression de sélection.
defaultSi une valeur par défaut facultative est spécifiée et si aucune des expressions de recherche ne correspond à l’expression de sélection,
DECODErenvoie 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.
exprpeut inclure des opérateurs Set, tels queUNION,INTERSECT,EXCEPTetMINUS. 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 Définir les opérateurs.
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 | +---------+---------------+