TRY_CONVERT (Transact-SQL)
Gibt einen in den angegebenen Datentyp umgewandelten Wert zurück, wenn die Umwandlung erfolgreich ist. Andernfalls wird NULL zurückgegeben.
Transact-SQL-Syntaxkonventionen
Syntax
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Argumente
data_type [ ( length ) ]
Der Datentyp, in den expression umgewandelt werden soll.expression
Der umzuwandelnde Wert.style
Ein optionaler ganzzahliger Ausdruck, der angibt, wie die TRY_CONVERT-Funktion expression übersetzen soll.style akzeptiert die gleichen Werte wie der style-Parameter der CONVERT-Funktion. Weitere Informationen finden Sie unter CAST und CONVERT (Transact-SQL).
Der Bereich zulässiger Werte wird durch den Wert von data_type bestimmt. Wenn style NULL ist, gibt TRY_CONVERT NULL zurück.
Rückgabetypen
Gibt eine in den angegebenen Datentyp umgewandelten Wert zurück, wenn die Umwandlung erfolgreich ist. Andernfalls wird NULL zurückgegeben.
Hinweise
TRY_CONVERT versucht, den übergebenen Wert in den angegebenen data_type zu konvertieren. Wenn die Umwandlung erfolgreich ist, gibt TRY_CONVERT den Wert als angegebenen data_type zurück. Tritt ein Fehler auf, wird NULL zurückgegeben. Wenn Sie jedoch eine Konvertierung anfordern, die explizit nicht zulässig ist, dann schlägt TRY_CONVERT mit einem Fehler fehl.
TRY_CONVERT ist ein neues Schlüsselwort in Kompatibilitätsgrad 110.
Diese Funktion kann remote auf Servern mit SQL Server 2012 oder einer höheren Version ausgeführt werden. Eine Remoteausführung auf Servern mit einer Version unter SQL Server 2012 ist nicht möglich.
Beispiele
A.TRY_CONVERT gibt NULL zurück.
Im folgenden Beispiel wird veranschaulicht, dass TRY_CONVERT "0" zurückgibt, wenn die Umwandlung fehlerhaft ist.
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
Dies ist das Resultset.
Result
------------
Cast failed
(1 row(s) affected)
Im folgenden Beispiel wird veranschaulicht, dass der Ausdruck im erwarteten Format sein muss.
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
Dies ist das Resultset.
Result
----------------------
NULL
(1 row(s) affected)
B.Bei TRY_CONVERT tritt ein Fehler auf.
Im folgenden Beispiel wird veranschaulicht, dass TRY_CONVERT einen Fehler zurückgibt, wenn die Umwandlung explizit nicht zulässig ist.
SELECT TRY_CONVERT(xml, 4) AS Result;
GO
Das Ergebnis dieser Anweisung ist ein Fehler, da eine ganze Zahl nicht in einen XML-Datentyp umgewandelt werden kann.
Explicit conversion from data type int to xml is not allowed.
C.TRY_CONVERT ist erfolgreich.
In diesem Beispiel wird veranschaulicht, dass der Ausdruck im erwarteten Format sein muss.
SET DATEFORMAT mdy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
Dies ist das Resultset.
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)