TRY_CONVERT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

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 ] )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

data_type [ ( length ) ]
Der Datentyp, in den expressionumgewandelt 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_typebestimmt. Wenn style NULL ist, gibt TRY_CONVERT NULL zurück.

Rückgabetypen

Gibt einen in den angegebenen Datentyp umgewandelten Wert zurück, wenn die Umwandlung erfolgreich ist. Andernfalls wird NULL zurückgegeben.

Bemerkungen

TRY_CONVERT versucht, den übergebenen Wert in den angegebenen data_typezu konvertieren. Wenn die Umwandlung erfolgreich ist, gibt TRY_CONVERT den Wert als angegebenen data_type zurück. Bei einem Fehler wird NULL zurückgegeben. Wenn Sie jedoch eine Konvertierung anfordern, die explizit nicht zulässig ist, verursacht TRY_CONVERT einen Fehler.

TRY_CONVERT ist ein reserviertes Schlüsselwort in Kompatibilitätsgrad 110 und höher.

Diese Funktion kann remote auf Servern mit einer Version von SQL Server 2012 (11.x) oder höher ausgeführt werden. Eine Remoteausführung auf Servern mit einer Version vor SQL Server 2012 (11.x) ist nicht möglich.

Beispiele

A. TRY_CONVERT gibt NULL zurück.

Im folgenden Beispiel wird veranschaulicht, dass TRY_CONVERT bei fehlerhafter Umwandlung NULL zurückgibt.

SELECT   
    CASE WHEN TRY_CONVERT(float, 'test') IS NULL   
    THEN 'Cast failed'  
    ELSE 'Cast succeeded'  
END AS Result;  
GO  

Hier ist das Resultset.

Result  
------------  
Cast failed  
  
(1 row(s) affected)  

Im folgenden Beispiel wird veranschaulicht, dass der Ausdruck das erwartete Format aufweisen muss.

SET DATEFORMAT dmy;  
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;  
GO  

Hier 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 das erwartete Format aufweisen muss.

SET DATEFORMAT mdy;  
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;  
GO  

Hier ist das Resultset.

Result  
----------------------------------  
2010-12-31 00:00:00.0000000  
  
(1 row(s) affected)  

Weitere Informationen

CAST und CONVERT (Transact-SQL)