- Kategorien:
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> ] )
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 wieUNION
,INTERSECT
,EXCEPT
undMINUS
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);
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 | +---------+---------------+
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 | +---------+---------------+