Share via


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 Wert zurück, der in den angegebenen Datentyp umwandeln wird, wenn die Umwandlung erfolgreich ist; andernfalls wird zurückgegeben NULL.

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

Der Datentyp, in den expressionumgewandelt werden soll.

length

Eine optionale ganze Zahl, die die Länge des Zieldatentyps angibt, falls eine vom Benutzer angegebene Länge für den Datentyp zulässig ist. Der Maximalwert für die Länge beträgt 8.000 Byte.

expression

Der zu umwandelnde Wert.

style

Optionaler ganzzahliger Ausdruck, der angibt, wie die TRY_CONVERT Funktion den Ausdruck übersetzen soll.

Formatvorlage akzeptiert dieselben Werte wie der Formatvorlagenparameter der CONVERT Funktion. Weitere Informationen finden Sie unter CAST und CONVERT.

Der Wert von data_type bestimmt den Bereich zulässiger Werte. Wenn die Formatvorlage lautet NULL, wird TRY_CONVERT der Wert zurückgegeben NULL.

Rückgabetypen

Gibt einen Wert zurück, der in den angegebenen Datentyp umwandeln wird, wenn die Umwandlung erfolgreich ist; andernfalls wird zurückgegeben NULL.

Hinweise

TRY_CONVERT versucht, den übergebenen Wert in den angegebenen data_typezu konvertieren. Wenn die Umwandlung erfolgreich ist, TRY_CONVERT wird der Wert wie der angegebene data_type zurückgegeben. Wenn ein Fehler auftritt, NULL wird dieser zurückgegeben. Wenn Sie jedoch eine Konvertierung anfordern, die explizit nicht zulässig ist, verursacht TRY_CONVERT einen Fehler.

TRY_CONVERTist eine reservierte Schlüsselwort (keyword), beginnend mit der Kompatibilitätsstufe110.

Diese Funktion ist in der Lage, server mit SQL Server 2012 (11.x) und höheren Versionen remote zu werden. Es ist nicht remote auf Server mit einer Version vor SQL Server 2012 (11.x) entfernt.

Beispiele

A. TRY_CONVERT gibt NULL zurück.

Im folgenden Beispiel wird veranschaulicht, dass TRY_CONVERT zurückgegeben wird NULL , wenn die Umwandlung fehlschlägt.

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

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

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

Hier ist das Resultset.

Result  
----------------------  
NULL

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 ein Integer 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/2022') AS Result;
GO

Hier ist das Resultset.

Result
----------------------------------
2022-12-31 00:00:00.0000000