Delen via


TRY_CONVERT (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

Geeft een waarde terug die wordt gecast naar het opgegeven datatype als de cast slaagt; anders geeft NULL.

Transact-SQL syntaxis-conventies

Syntaxis

TRY_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Arguments

data_type

Het gegevenstype waarin de expressie moet worden gecast.

length

Een optioneel geheel getal dat de lengte van het doelgegevenstype aangeeft, voor gegevenstypen die een door de gebruiker opgegeven lengte toestaan. De maximale waarde voor lengte is 8.000 bytes.

expressie

De waarde om te casten.

stijl

Optionele gehele expressie die specificeert hoe de TRY_CONVERT functie de expressie moet vertalen.

stijl accepteert dezelfde waarden als de stijlparameter van de CONVERT functie. Zie CAST en CONVERTvoor meer informatie.

De waarde van data_type bepaalt het bereik van acceptabele waarden. Als stijl is NULL, dan TRY_CONVERT geeft .NULL

Retourtypen

Geeft een waarde terug die wordt gecast naar het opgegeven datatype als de cast slaagt; anders geeft NULL.

Opmerkingen

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

TRY_CONVERT is een gereserveerd trefwoord, beginnend met compatibiliteitsniveau 110.

Deze functie kan op afstand worden overgeschakeld naar servers die SQL Server 2012 (11.x) en latere versies hebben. Het wordt niet op afstand gekoppeld aan servers die een versie hebben die ouder is dan SQL Server 2012 (11.x).

Voorbeelden

Eén. TRY_CONVERT geeft NULL terug

  • Het volgende voorbeeld laat zien dat TRY_CONVERT terugkomt NULL wanneer de cast faalt.

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

    Deze query geeft een resultaat van NULL.

B. TRY_CONVERT faalt door een fout

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

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

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

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

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