Teilen über


TRY_CAST (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse 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.

length

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

Der Bereich zulässiger Werte wird durch den Wert von data_typebestimmt.

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 nicht für varchar(max), wenn die Länge 8.000 übersteigt.

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
  
(1 row(s) affected)

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
  
(1 row(s) affected)

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
  
(1 row(s) affected)

Siehe auch