Delen via


TRY_CAST (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Retourneert een waardecast naar het opgegeven gegevenstype als de cast slaagt; anders wordt null geretourneerd.

Transact-SQL syntaxis-conventies

Syntaxis

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

expressie

Hiermee geeft u een geldige expressie die moet worden cast.

data_type

Het gegevenstype waarin de expressie moet worden gecast. Deze waarde bepaalt het bereik van acceptabele waarden.

length

Optioneel geheel getal dat de lengte van het doelgegevenstype aangeeft.

Retourtypen

Retourneert een waardecast naar het opgegeven gegevenstype als de cast slaagt; anders wordt null geretourneerd.

Opmerkingen

TRY_CAST neemt de waarde die eraan is doorgegeven en probeert deze te converteren naar de opgegeven data_type. Als de cast slaagt, TRY_CAST wordt de waarde geretourneerd als de opgegeven data_type; als er een fout optreedt, wordt null geretourneerd. Als u echter een conversie aanvraagt die expliciet niet is toegestaan, mislukt het TRY_CAST met een fout.

TRY_CAST is geen nieuw gereserveerd trefwoord en is beschikbaar in alle compatibiliteitsniveaus. TRY_CAST heeft dezelfde semantiek als TRY_CONVERT bij het maken van verbinding met externe servers.

TRY_CAST werkt niet voor een expressie in de volgende gevallen:

  • varchar(max) als de lengte hoger is dan 8.000
  • nvarchar(max) als de lengte hoger is dan 4.000

Voorbeelden

Eén. TRY_CAST geeft NULL terug

  • In het volgende voorbeeld ziet u dat TRY_CAST null wordt geretourneerd wanneer de cast mislukt.

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

    Deze query geeft een resultaat van Cast failed.

  • In het volgende voorbeeld ziet u dat de expressie de verwachte indeling moet hebben.

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

    Deze query geeft een resultaat van NULL.

B. TRY_CAST mislukt met een fout

In het volgende voorbeeld ziet u dat TRY_CAST er een fout wordt geretourneerd wanneer de cast expliciet niet is toegestaan.

SELECT TRY_CAST(4 AS XML) AS Result;
GO

Het resultaat van deze instructie is een fout, omdat een geheel getal niet in het xml-datatype kan worden gecast.

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

C. TRY_CAST slaagt

In dit voorbeeld ziet u dat de expressie de verwachte indeling moet hebben.

SET DATEFORMAT mdy;

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

Deze query geeft een resultaat van 2022-12-31 00:00:00.0000000.