In SQL Server ist eine häufig verwendete Funktion CAST()
, das einen Ausdruck eines Datentyps in einen anderen umwandelt. Wenn die Umwandlung jedoch nicht erfolgreich ist, wird ein Fehler zurückgegeben.
Geben Sie TRY_CAST()
ein .
Der TRY_CAST()
Funktion gibt keinen Fehler zurück, wenn die Umwandlung fehlschlägt. Stattdessen wird NULL
zurückgegeben .
Es gibt jedoch einige Fälle, in denen ein Fehler zurückgegeben wird.
Syntax
Die Syntax lautet wie folgt:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Wobei expression
ist der zu konvertierende Ausdruck data_type
ist der neue Datentyp und length
ist eine optionale Länge für den neuen Datentyp.
Beispiel 1 – Cast erfolgreich
Hier ist ein Beispiel für das Casting einer Zeichenfolge als decimal
:
SELECT TRY_CAST('007' AS DECIMAL(5,2));
Ergebnis:
7.00
In diesem Fall war die Umwandlung erfolgreich.
Beispiel 2 – Umwandlung schlägt fehl und gibt NULL
zurück
Hier ist ein Beispiel für das Fehlschlagen der Umwandlung und NULL
zurückgegeben:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));
Ergebnis:
NULL
Die Umwandlung ist fehlgeschlagen, also NULL
wurde zurückgegeben.
Zum Vergleich, hier ist, was passiert, wenn wir CAST()
verwenden statt TRY_CAST()
:
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));
Ergebnis:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Beispiel 3 – Umwandlung schlägt fehl und gibt einen Fehler zurück
Es gibt einige Fälle, in denen TRY_CAST()
wird einen Fehler zurückgeben.
Wenn ein Cast explizit nicht erlaubt ist, dann gibt es einen Fehler zurück:
SELECT TRY_CAST(10 AS xml);
Ergebnis:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Weitere Informationen
Siehe Wie CAST()
Funktioniert in SQL Server für weitere Konvertierungsbeispiele und CAST()
vs TRY_CAST()
in SQL Server für einen Vergleich zwischen CAST()
und TRY_CAST()
.
Siehe die Microsoft-Dokumentation für CAST()
und CONVERT()
für detailliertere Informationen (das meiste gilt auch für TRY_CAST()
).