Freigeben über


TRY_CAST (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank 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_CAST ( expression AS data_type [ ( length ) ] )

Argumente

expression

Gibt einen beliebigen gültigen Ausdruck an, der umgewandelt werden soll.

data_type

Der Datentyp, in den expressionumgewandelt werden soll. Dieser Wert bestimmt den Bereich zulässiger Werte.

length

Eine optionale ganze Zahl, die die Länge des Zieldatentyps angibt.

Rückgabetypen

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

Bemerkungen

TRY_CAST versucht, den übergebenen Wert in den angegebenen data_typezu konvertieren. Wenn die Umwandlung erfolgreich ist, gibt TRY_CAST 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_CAST einen Fehler.

TRY_CAST ist kein neues reserviertes Schlüsselwort und in allen Kompatibilitätsgraden verfügbar. TRY_CAST verfügt beim Herstellen einer Verbindung mit Remoteservern über die gleiche Semantik wie TRY_CONVERT.

TRY_CAST funktioniert in den folgenden Fällen nicht für einen Ausdruck :

  • varchar(max) if the length is over 8.000
  • nvarchar(max) wenn die Länge über 4.000 liegt

Beispiele

A. TRY_CAST gibt NULL zurück.

Im folgenden Beispiel wird veranschaulicht, dass TRY_CAST NULL zurückgibt, wenn die Umwandlung fehlerhaft ist.

SELECT
CASE WHEN TRY_CAST('test' AS FLOAT) IS NULL
     THEN 'Cast failed'
     ELSE 'Cast succeeded'
END AS Result;
GO

Hier sehen Sie das Ergebnis.

Result
------------
Cast failed

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

SET DATEFORMAT dmy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

Hier sehen Sie das Ergebnis.

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

B. Bei TRY_CAST tritt ein Fehler auf.

Im folgenden Beispiel wird veranschaulicht, dass TRY_CAST einen Fehler zurückgibt, wenn die Umwandlung explizit nicht zulässig ist.

SELECT TRY_CAST(4 AS XML) 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_CAST ist erfolgreich.

In diesem Beispiel wird veranschaulicht, dass der Ausdruck das erwartete Format aufweisen muss.

SET DATEFORMAT mdy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

Hier sehen Sie das Ergebnis.

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