Dela via


TRY_CAST (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar ett värde kastat till den angivna datatypen om kastningen lyckas; annars returnerar null.

Transact-SQL syntaxkonventioner

Syntax

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

uttryck

Specificerar vilket giltigt uttryck som helst som ska kastas.

data_type

Datatypen som uttrycket ska kastas in i. Detta värde bestämmer intervallet för acceptabla värden.

length

Valfritt heltal som specificerar längden på måldatatypen.

Returtyper

Returnerar ett värde kastat till den angivna datatypen om kastningen lyckas; annars returnerar null.

Anmärkningar

TRY_CAST tar värdet som skickas till den och försöker konvertera det till den angivna data_type. Om kastet lyckas returnerar TRY_CAST värdet som angivet data_type; om ett fel uppstår returneras null. Men om du begär en konvertering som uttryckligen inte är tillåten, misslyckas TRY_CAST den med ett fel.

TRY_CAST är inte ett nytt reserverat nyckelord och finns tillgängligt på alla kompatibilitetsnivåer. TRY_CAST har samma semantik som TRY_CONVERT när man ansluter till fjärrservrar.

TRY_CAST fungerar inte för ett uttryck i följande fall:

  • varchar(max) om längden är över 8 000
  • nvarchar(max) om längden är över 4 000

Examples

A. TRY_CAST returnerar NULL

  • Följande exempel visar att TRY_CAST returnerar null när kastet misslyckas.

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

    Denna fråga ger ett resultat av Cast failed.

  • Följande exempel visar att uttrycket måste vara i det förväntade formatet.

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

    Denna fråga ger ett resultat av NULL.

B. TRY_CAST misslyckas med ett fel

Följande exempel visar att TRY_CAST returnerar ett fel när castet uttryckligen inte är tillåtet.

SELECT TRY_CAST(4 AS XML) AS Result;
GO

Resultatet av detta uttalande är ett fel, eftersom ett heltal inte kan kastas in i xml-datatypen .

Explicit conversion from data type int to xml is not allowed.

C. TRY_CAST lyckas

Detta exempel visar att uttrycket måste vara i förväntat format.

SET DATEFORMAT mdy;

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

Denna fråga ger ett resultat av 2022-12-31 00:00:00.0000000.