Table des matières

Search

  1. Préface
  2. Le langage de transformation
  3. Constantes
  4. Opérateurs
  5. Variables
  6. Dates
  7. Fonctions

Transformation Language Reference

Transformation Language Reference

DECODE

DECODE

Recherche dans un port une valeur que vous avez spécifiée. Si la fonction trouve la valeur, elle renvoie une valeur de résultat, que vous définissez. Vous pouvez créer un nombre de recherches illimité à l'intérieur d'une fonction DECODE.
Si vous utilisez DECODE pour rechercher une valeur dans un port de chaîne, vous pouvez couper les espaces de fin à l'aide de la fonction RTRIM ou les inclure dans la chaîne de recherche.

Syntaxe

DECODE(
value
,
first_search
,
first_result
[,
second_search
,
second_result
]...[,
default
] )
Le tableau suivant décrit les arguments de cette commande:
Argument
Obligatoire/
Facultatif
Description
valeur
Obligatoire
Tout type de données excepté Binaire. Transmet les valeurs que vous voulez rechercher. Vous pouvez entrer l'expression de transformation valide de votre choix.
recherche
Obligatoire
Toute valeur dont le type de données est identique à l'argument de la valeur. Transmet les valeurs que vous voulez rechercher. La valeur de recherche doit correspondre à l'argument de valeur. Vous ne pouvez pas rechercher une partie d'une valeur. En outre, la valeur de recherche est sensible à la casse.
Par exemple, si vous voulez rechercher la chaîne « Halogen Flashlight » dans un port spécifique, vous devez saisir « Halogen Flashlight », pas uniquement « Halogen ». Si vous entrez 'Halogen', la recherche ne trouve aucune valeur correspondante. Vous pouvez entrer l'expression de transformation valide de votre choix.
résultat
Obligatoire
Tout type de données excepté Binaire. Valeur que vous voulez renvoyer si la recherche trouve une valeur correspondante. Vous pouvez entrer l'expression de transformation valide de votre choix.
valeur par défaut
Facultatif
Tout type de données excepté Binaire. Valeur à renvoyer si la recherche ne trouve pas de valeur correspondante. Vous pouvez entrer l'expression de transformation valide de votre choix.

Valeur de retour

First_result
si la recherche trouve une valeur correspondante.
Valeur par défaut si la recherche ne trouve aucune valeur correspondante.
NULL si vous omettez l'argument par défaut et que la recherche ne trouve aucune valeur correspondante.
Même si plusieurs conditions sont satisfaites, le
Service d'intégration de données
renvoie le premier résultat correspondant.
Si les données contiennent des caractères multioctets et que l'expression DECODE compare les données de chaîne, la valeur de retour dépend de la page de code et du mode de mouvement de données du
Service d'intégration de données
.

fonction DECODE et types de données

Lorsque vous utilisez la fonction DECODE, le type de données de la valeur de retour est toujours identique à celui du résultat dont la précision est la plus élevée.
Par exemple, prenons l'expression suivante :
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', 1.414213562,          'Archimedes', 3.141592654,          'Pi', 3.141592654 )
Les valeurs de retour dans cette expression sont 5, 1.414213562 et 3.141592654. Le premier résultat est un nombre entier et les autres sont des décimaux. La précision du type de données décimal est supérieure à celle d'un nombre entier. Cette expression écrit toujours le résultat sous forme de décimal.
Lorsque vous exécutez un mappage en mode précision élevée, si au moins un résultat est de type double, le type de données de la valeur de retour sera double.
Vous ne pouvez pas créer de fonction DECODE avec les valeurs de retour de chaîne et numériques.
Par exemple, l'expression suivante n'est pas valide :
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', '1.414213562',          'Archimedes', '3.141592654',          'Pi', 3.141592654 )
Lorsque vous validez l'expression ci-dessus, vous recevez le message d'erreur suivant :
Function cannot resolve operands of ambiguously mismatching datatypes.

Exemples

Vous pouvez utiliser DECODE dans une expression qui recherche un ITEM_ID spécifique et renvoie ITEM_NAME :
DECODE( ITEM_ID, 10, 'Flashlight',                  14, 'Regulator',                  20, 'Knife',                  40, 'Tank',                  'NONE' )
ITEM_ID  
RETURN VALUE
10
Flashlight
14
Regulator
17
NONE
20
Knife
25
NONE
NULL
NONE
40
Tank
DECODE renvoie la valeur par défaut NONE pour les éléments 17 et 25, car les valeurs de recherche ne correspondent pas à ITEM_ID. En outre, DECODE renvoie NONE pour ITEM_ID NULL.
L'expression suivante teste plusieurs colonnes et conditions, évaluées de haut en bas sur TRUE ou FALSE :
DECODE( TRUE,         Var1 = 22, 'Variable 1 was 22!',         Var2 = 49, 'Variable 2 was 49!',         Var1 < 23, 'Variable 1 was less than 23.',         Var2 > 30, 'Variable 2 was more than 30.',         'Variables were out of desired ranges.')
Var1   
Var2   
RETURN VALUE
21
47
Variable 1 was less than 23.
22
49
Variable 1 was 22!
23
49
Variable 2 was 49!
24
27
Variables were out of desired ranges.
25
50
Variable 2 was more than 30.