Verwendung der TRY_CAST-Funktion in SQL Server

Das TRY_CAST Funktion in SQL Server wird verwendet Wert von seinem vorhandenen Datentyp in einen angegebenen Zieldatentyp umwandeln. Dies geschieht nur, wenn der Vorgang erfolgreich ist. Wenn die Konvertierung fehlschlägt, wird NULL zurückgegeben. TRY_CAST ist eine erweiterte Version der CAST-Funktion. In diesem Lernprogramm wird die Verwendung von TRY_CAST in SQL Server erläutert.

TRY_CAST berücksichtigt den übergebenen Wert und den vorhandenen Datentyp und versucht, ihn in einen angegebenen Zieldatentyp zu konvertieren. Wenn der Konvertierungsvorgang zulässig ist, wird der Wert im angegebenen Zieldatentyp zurückgegeben. Wenn der Vorgang den Wert nicht konvertieren kann, wird NULL als Ausgabe zurückgegeben.

TRY_CAST wurde erstmals in der Microsoft SQL Server 2012 Edition enthalten.

Syntax für TRY_CAST

TRY_CAST (Ausdruck als Zieldatentyp [Länge]) 

Ausdruck: Wert, der in einen Zieldatentyp umgewandelt werden soll
Zieldatentyp: Der Datentyp, in den der Wert umgewandelt werden soll
Länge: Optionaler Parameter, um die Länge des Datentyps anzugeben

Einschränkungen bei der Verwendung von CAST in SQL Server

Wenn Sie CAST verwenden, wird eine Fehlermeldung angezeigt, wenn die Konvertierung vom Quell- zum Zieldatentyp fehlschlägt. Wenn dies nicht zulässig ist, kann dies den Code beschädigen. Daher wird die Verwendung von TRY_CAST anstelle von CAST empfohlen.

Im folgenden Beispiel versuche ich, einen Zeichenfolgewert in eine Ganzzahl zu CAST, die eine falsche Konvertierung darstellt. CAST kann diese Konvertierung nicht abschließen und gibt einen Fehler zurück. TRY_CAST gibt jedoch NULL zurück, wenn die Konvertierung fehlschlägt.

SELECT CAST ('Tech-Recipes' als INT) als CastExample; 

Meldung 245, Ebene 16, Status 1, Zeile 1
Die Konvertierung ist fehlgeschlagen, wenn der varchar-Wert 'Tech-Recipes' in den Datentyp int konvertiert wurde.



Verwenden Sie TRY_CAST, um zu vermeiden, dass SQL Server einen Fehler auslöst, wenn die Datentypkonvertierung fehlschlägt.

SELECT TRY_CAST ('Tech-Recipes' als INT) als TryCastExample; 
TryCastExample -------------- NULL 

Beispiele mit TRY_CAST

1. Fehler bei Verwendung von TRY_CAST (gibt NULL zurück)

Das folgende Beispiel zeigt, dass TRY_CAST bei einem Fehler NULL zurückgibt, anstatt wie CAST einen Fehler zu melden.

SELECT CASE WENN TRY_CAST ('Tech-Recipes.com' ALS INT) NULL DANN ist 'Die Konvertierung ist fehlgeschlagen.' ELSE 'Conversion erfolgreich' ENDE; 

2. Erfolgreiche Konvertierung mit TRY_CAST

Das folgende Beispiel zeigt, dass TRY_CAST eine erfolgreiche Konvertierung abschließt, wenn die Konvertierung in einen Zieldatentyp zulässig ist.

SELECT CASE WHEN TRY_CAST (1234 ALS DEZIMAL (18,2)) NULL DANN 'Die Konvertierung ist fehlgeschlagen.' ELSE 'Conversion erfolgreich' END; 

3. Explizite Konvertierung mit TRY_CAST (nicht zulässig)

Das folgende Beispiel zeigt, dass TRY_CAST keine explizite Konvertierung durchführen darf. TRY_CAST gibt einen Fehler aus.

Meldung 529, Ebene 16, Status 2, Zeile 1
Eine explizite Konvertierung vom Datentyp int in xml ist nicht zulässig.

Zusammenfassung

TRY_CAST kann anstelle der CAST-Funktion verwendet werden, um die Ausgabe eines Fehlers zu vermeiden, ohne den TRY-CATCH-Block zu verwenden. Die in diesem Lernprogramm verwendeten Beispiele zeigen, wie Sie die TRY_CAST-Funktion in SQL Server verwenden.