Inhaltsverzeichnis

Search

  1. Vorwort
  2. Umwandlungssprache
  3. Konstanten
  4. Operatoren
  5. Variablen
  6. Datumsangaben
  7. Funktionen

Referenzhandbuch für die Umwandlungssprache

Referenzhandbuch für die Umwandlungssprache

DECODE

DECODE

Durchsucht einen Port nach einem angegebenen Wert. Wenn die Funktion den Wert findet, wird der zuvor definierte Ergebniswert zurückgegeben. Sie können beliebig viele Suchvorgänge innerhalb der Funktion DECODE erstellen.
Beim Suchen eines Werts in einem String-Port mit DECODE können Sie entweder nachgestellte Leerzeichen mit der Funktion RTRIM entfernen oder die Leeerzeichen in den Suchstring mit aufnehmen.

Syntax

DECODE(
value
,
first_search
,
first_result
[,
second_search
,
second_result
]...[,
default
] )
In der folgenden Tabelle werden die Argumente für diesen Befehl beschrieben:
Argument
Erforderlich/
Optional
Beschreibung
value
Erforderlich
Alle Datentypen außer binär. Übergibt die Werte, nach denen gesucht werden soll. Sie können einen beliebigen gültigen Umwandlungausdruck eingeben.
search
Erforderlich
Beliebiger Wert desselben Datentyps wie das „value“-Argument. Übergibt die Werte, in denen gesucht werden soll. Der „search“-Wert muss mit dem „value“-Argument übereinstimmen. Sie können nicht nach einem Teil eines Werts suchen. Der Suchwert unterscheidet zwischen Groß- und Kleinschreibung.
Beispiel: Wenn Sie den String „Halogen Flashlight“ in einem bestimmten Port suchen möchten, müssen Sie „Halogen Flashlight“ und nicht nur „Halogen“ angeben. Für „Halogen“ wird die Suche keinen übereinstimmenden Wert finden. Sie können einen beliebigen gültigen Umwandlungausdruck eingeben.
result
Erforderlich
Alle Datentypen außer binär. Der Wert, der zurückgegeben werden soll, wenn die Suche einen übereinstimmenden Wert findet: Sie können einen beliebigen gültigen Umwandlungausdruck eingeben.
default
Optional
Alle Datentypen außer binär. Der Wert, der zurückgegeben wird, wenn die Suche keinen übereinstimmenden Wert findet. Sie können einen beliebigen gültigen Umwandlungausdruck eingeben.

Rückgabewert

First_result
, wenn die Suche einen übereinstimmenden Wert findet.
„default“-Wert, wenn die Suche keinen übereinstimmenden Wert findet.
NULL, wenn Sie kein „default“-Argument angeben und die Suche keinen übereinstimmenden Wert findet.
Auch wenn mehrere Bedingungen erfüllt sind, gibt
Data Integration Service
das erste übereinstimmende Ergebnis zurück.
Wenn die Daten Multibyte-Zeichen enthalten und der DECODE-Ausdruck Stringdaten vergleicht, hängt der Rückgabewert von der Codepage und dem Datenverschiebungsmodus von
Data Integration Service
ab.

DECODE und Datentypen

Bei DECODE ist der Datentyp des Rückgabewerts immer der gleiche wie der Datentyp des Ergebnisses mit der höchsten Präzision.
Beispiel: Sie haben folgenden Ausdruck formuliert:
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', 1.414213562,          'Archimedes', 3.141592654,          'Pi', 3.141592654 )
Die Rückgabewerte in diesem Ausdruck lauten 5, 1.414213562 und 3.141592654. Der erste Ergebnis ist eine Ganzzahl, die anderen sind Dezimalzahlen. Der Dezimaldatentyp weist eine höhere Präzision auf als die Ganzzahl. Dieser Ausdruck schreibt das Ergebnis immer als Dezimalzahl.
Wenn bei Mappings im hohen Präzisionsmodus mindestens ein Ergebnis einen Double-Wert liefert, ist auch der Datentyp des Rückgabewerts Double.
DECODE-Funktionen mit String- und numerischen Rückgabewerten sind nicht möglich.
Beispiel: Der folgende Ausdruck ist ungültig:
DECODE ( CONST_NAME          'Five', 5,          'Pythagoras', '1.414213562',          'Archimedes', '3.141592654',          'Pi', 3.141592654 )
Beim Validieren des Ausdrucks oben erhalten Sie folgende Fehlermeldung:
Function cannot resolve operands of ambiguously mismatching datatypes.

Beispiele

Sie können DECODE in einem Ausdruck verwenden, der eine bestimmte ITEM_ID sucht und den entsprechenden ITEM_NAME zurückgibt:
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 gibt den Standardwert NONE für Artikel 17 und 25 zurück, weil die Suchwerte der ITEM_ID nicht entsprechen. Auch für die ITEM_ID NULL gibt DECODE NONE zurück.
Der folgende Ausdruck testet mehrere Spalten und Bedingungen, die von oben nach unten mit TRUE und FALSE ausgewertet werden:
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.