Dela via


TRY_CONVERT (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_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Arguments

data_type

Datatypen som uttrycket ska kastas in i.

length

Ett valfritt heltal som anger längden på måldatatypen för datatyper som tillåter en användares angivna längd. Maxvärdet för längd är 8 000 byte.

uttryck

Värdet att kasta.

stil

Valfritt heltalsuttryck som specificerar hur TRY_CONVERT funktionen ska översätta.

Style accepterar samma värden som style-parameternCONVERT för funktionen. Mer information finns i CAST och CONVERT.

Värdet av data_type bestämmer intervallet för acceptabla värden. Om stilen är NULL, så TRY_CONVERT returnerar NULL.

Returtyper

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

Anmärkningar

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

TRY_CONVERT är ett reserverat nyckelord, som börjar med kompatibilitetsnivån 110.

Denna funktion kan fjärrstyras till servrar som har SQL Server 2012 (11.x) och senare versioner. Den är inte fjärransluten till servrar som har en version tidigare än SQL Server 2012 (11.x).

Examples

A. TRY_CONVERT returnerar NULL

  • Följande exempel visar att det TRY_CONVERT återkommer NULL när gipset misslyckas.

    SELECT
        CASE WHEN TRY_CONVERT(FLOAT, 'test') 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_CONVERT(DATETIME2, '12/31/2022') AS Result;
    GO
    

    Denna fråga ger ett resultat av NULL.

B. TRY_CONVERT misslyckas med ett fel

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

SELECT TRY_CONVERT(XML, 4) 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_CONVERT lyckas

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

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

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