In SQL Server der TRY_CONVERT()
Funktion ist der CONVERT()
sehr ähnlich Funktion, außer dass TRY_CONVERT()
gibt keinen Fehler zurück, wenn die Konvertierung fehlschlägt (CONVERT()
tut).
Stattdessen TRY_CONVERT()
Funktion gibt NULL
zurück wenn die Konvertierung nicht erfolgreich ist.
Es gibt jedoch einige Fälle, in denen TRY_CONVERT()
gibt einen Fehler zurück.
Syntax
Die Syntax lautet wie folgt:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
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.
Der optionale style
Argument kann verwendet werden, um anzugeben, wie die Funktion den expression
übersetzen soll Streit. Sie könnten dieses Argument beispielsweise verwenden, um das Datumsformat anzugeben.
Beispiel 1 – Konvertierung erfolgreich
Hier ist ein Beispiel für die Umwandlung einer Zeichenfolge in eine Dezimalzahl:
SELECT TRY_CONVERT(DECIMAL(5,2), '007');
Ergebnis:
7.00
In diesem Fall war die Konvertierung erfolgreich.
Beispiel 2 – Konvertierung schlägt fehl und gibt NULL
zurück
Hier ist ein Beispiel für das Fehlschlagen der Konvertierung und NULL
zurückgegeben:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three');
Ergebnis:
NULL
Die Konvertierung ist fehlgeschlagen, also NULL
wurde zurückgegeben.
Zum Vergleich, hier ist, was passiert, wenn wir CONVERT()
verwenden statt TRY_CONVERT()
:
SELECT CONVERT(DECIMAL(5,2), 'Three');
Ergebnis:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Beispiel 3 – Konvertierung schlägt fehl und gibt einen Fehler zurück
Es gibt einige Fälle, in denen TRY_CONVERT()
wird einen Fehler zurückgeben.
Wenn eine Konvertierung ausdrücklich nicht erlaubt ist, wird ein Fehler zurückgegeben:
SELECT TRY_CONVERT(xml, 10);
Ergebnis:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Beispiel 4 – Der style
Argument
Wir können den optionalen style
verwenden Argument, um anzugeben, wie der Ausdruck übersetzt werden soll.
Beispiel:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German";
Ergebnis:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Hier stelle ich meine Sprache auf British
ein , dann TRY_CONVERT()
ausgeführt mehrmals, jeweils mit einem anderen style
Argument (mit Ausnahme des ersten, das die Standardsprache meiner Sitzung verwendet – Britisch).
Wir können sehen, dass das Stilargument beeinflusst, wie der Ausdruck übersetzt wird.
Weitere Informationen
Siehe CONVERT()
in SQL Server für weitere Konvertierungsbeispiele und CONVERT()
vs TRY_CONVERT()
in SQL Server für einen Vergleich zwischen CONVERT()
und TRY_CONVERT()
.
Siehe die Microsoft-Dokumentation für CAST()
und CONVERT()
für detailliertere Informationen (das meiste gilt auch für TRY_CONVERT()
). ).