Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
DECODE-Funktion
Ein DECODE-Ausdruck ersetzt einen spezifischen Wert entweder durch einen anderen spezifischen Wert oder einen Standardwert, abhängig vom Ergebnis einer Gleichheitsbedingung. Diese Operation ist der Operation eines einfachen CASE-Ausdrucks oder einer IF-THEN-ELSE-Anweisung gleichwertig.
Syntax
DECODE ( expression, search, result [, search, result ]... [ ,default ] )
Diese Art von Ausdruck ist nützlich, um Abkürzungen oder Codes zu ersetzen, die in Tabellen mit relevanten Geschäftswerten gespeichert werden, die für Berichte benötigt werden.
Parameter
- expression
-
Die Quelle des Werts, den Sie vergleichen möchten, beispielsweise eine Spalte in einer Tabelle.
- search
-
Der Zielwert, der anhand des Quellausdrucks verglichen wird, beispielsweise ein numerischer Wert oder eine Zeichenfolge. Der Suchausdruck muss zu einem einzelnen festen Wert ausgewertet werden. Sie können keinen Ausdruck angeben, der zu einem Bereich von Werten ausgewertet wird, wie
age between 20 and 29. Sie müssen für jeden Wert, den Sie ersetzen möchten, eigene Such-/Ergebnispaare angeben.Der Datentyp aller Instances des Suchausdrucks muss derselbe oder kompatibel sein. Die Parameter expression und search müssen ebenfalls kompatibel sein.
- Ergebnis
-
Der Ersetzungswert, den die Abfrage zurückgibt, wenn der Ausdruck mit dem Suchwert übereinstimmt. Sie müssen mindestens ein Such-/Ergebnispaar in den DECODE-Ausdruck einschließen.
Die Datentypen aller Instances des Ergebnisausdrucks müssen dieselben oder kompatibel sein. Die Parameter result und default müssen ebenfalls kompatibel sein.
- default
-
Ein optionaler Standardwert, der verwendet wird, wenn die Suchbedingung fehlschlägt. Wenn Sie keinen Standardwert angeben, gibt der DECODE-Ausdruck NULL zurück.
Nutzungshinweise
Wenn die Werte für expression und search NULL sind, ist das DECODE-Ergebnis der entsprechende Wert für result. Im Beispielabschnitt wird diese Verwendung der Funktion veranschaulicht.
Wenn DECODE auf diese Weise verwendet wird, ist sie mit Funktion NVL2 vergleichbar. Es gibt jedoch einige Unterschiede. Eine Beschreibung dieser Unterschiede finden Sie in den Nutzungshinweisen für NVL2.
Beispiele
Wenn der Wert 2008-06-01 in der Spalte CALDATE von DATETABLE vorhanden ist, wird er im folgenden Beispiel durch June 1st, 2008 ersetzt. Im Beispiel werden alle weiteren CALDATE-Werte durch NULL ersetzt.
select decode(caldate, '2008-06-01', 'June 1st, 2008') from datetable where month='JUN' order by caldate; case ---------------- June 1st, 2008 ... (30 rows)
Im folgenden Beispiel wird ein DECODE-Ausdruck verwendet, um die fünf abgekürzten CATNAME-Spalten in der Tabelle CATEGORY in die vollständigen Namen zu konvertieren und andere Werte in der Spalte in zu konvertieren Unknown.
select catid, decode(catname, 'NHL', 'National Hockey League', 'MLB', 'Major League Baseball', 'MLS', 'Major League Soccer', 'NFL', 'National Football League', 'NBA', 'National Basketball Association', 'Unknown') from category order by catid; catid | case -------+--------------------------------- 1 | Major League Baseball 2 | National Hockey League 3 | National Football League 4 | National Basketball Association 5 | Major League Soccer 6 | Unknown 7 | Unknown 8 | Unknown 9 | Unknown 10 | Unknown 11 | Unknown (11 rows)
Verwenden Sie einen DECODE-Ausdruck, um Veranstaltungsorte in Colorado und Nevada mit NULL-Werten in der Spalte VENUESEATS zu finden: konvertieren Sie die NULL-Werte in Nullen. Wenn die Spalte VENUESEATS nicht NULL ist, wird 1 als Ergebnis zurückgegeben.
select venuename, venuestate, decode(venueseats,null,0,1) from venue where venuestate in('NV','CO') order by 2,3,1; venuename | venuestate | case ------------------------------+----------------+----------- Coors Field | CO | 1 Dick's Sporting Goods Park | CO | 1 Ellie Caulkins Opera House | CO | 1 INVESCO Field | CO | 1 Pepsi Center | CO | 1 Ballys Hotel | NV | 0 Bellagio Hotel | NV | 0 Caesars Palace | NV | 0 Harrahs Hotel | NV | 0 Hilton Hotel | NV | 0 ... (20 rows)