Kategorien:

Funktionen für bedingte Ausdrücke

DECODE

Vergleicht den Auswahlausdruck mit jedem Suchbegriff in der angegebenen Reihenfolge. Sobald ein Suchausdruck mit dem Auswahlausdruck übereinstimmt, wird der entsprechende Ergebnisausdruck zurückgegeben.

Bemerkung

DECODE in Snowflake unterscheidet sich von der Funktion DECODE in PostgreSQL, die Daten in verschiedene Codierungen konvertiert.

Syntax

DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
Copy

Argumente

expr

Dies ist der „Auswahlausdruck“. Die „Suchausdrücke“ werden mit diesem Auswahlausdruck verglichen. Wenn es eine Übereinstimmung gibt, gibt DECODE das Ergebnis zurück, das diesem Suchausdruck entspricht. Der Auswahlausdruck ist normalerweise eine Spalte, kann jedoch eine Unterabfrage, ein Literal oder ein anderer Ausdruck sein.

searchN

Die Suchausdrücke geben die mit dem Auswahlausdruck zu vergleichenden Werte an. Wenn einer dieser Suchausdrücke übereinstimmt, gibt die Funktion den entsprechenden Ergebniswert result zurück. Wenn mehr als ein Suchausdruck übereinstimmen würde, wird nur das Ergebnis der ersten Übereinstimmung zurückgegeben.

resultN

Die Ergebnisse sind die Werte, die zurückgegeben werden, wenn einer der Suchausdrücke mit dem Auswahlausdruck übereinstimmt.

default

Wenn ein optionaler Standard angegeben ist und keiner der Suchausdrücke mit dem Auswahlausdruck übereinstimmt, gibt DECODE diesen Standardwert zurück.

Nutzungshinweise

  • Im Gegensatz zu CASE stimmt ein NULL-Wert im Auswahlausdruck mit einem NULL-Wert in den Suchausdrücken überein.

  • Der Wert für expr kann Mengenoperatoren wie UNION, INTERSECT, EXCEPT und MINUS enthalten. Stellen Sie bei der Verwendung von Mengenoperatoren sicher, dass die Datentypen kompatibel sind. Weitere Informationen dazu finden Sie unter Allgemeine Nutzungshinweise unter dem Thema Mengenoperatoren.

Sortierungsdetails

  • Die Sortierungsspezifikationen des Auswahlausdrucks und der Suchausdrücke müssen alle kompatibel sein.

  • Der von der Funktion zurückgegebene Wert behält die Sortierungsspezifikation des Ergebnisses mit der höchsten Priorität bei.

Beispiele

Erstellen Sie eine Tabelle, und fügen Sie Zeilen ein:

CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES 
    (1),
    (2),
    (NULL),
    (4);
Copy

Beispiel mit einem Standardwert 'other' (beachten Sie, dass NULL gleich NULL ist):

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         |
+---------+---------------+
Copy

Beispiel ohne Standardwert (beachten Sie, dass der nicht übereinstimmende Wert NULL zurückgibt):

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          |
+---------+---------------+
Copy