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() ).