In SQL Server is een veelgebruikte functie CAST() , die een uitdrukking van het ene gegevenstype naar het andere converteert. Maar als de cast niet slaagt, wordt er een fout geretourneerd.
Voer TRY_CAST() in .
De TRY_CAST() functie retourneert geen fout als de cast mislukt. In plaats daarvan retourneert het NULL .
Er zijn echter enkele gevallen waarin het een fout retourneert.
Syntaxis
De syntaxis gaat als volgt:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Waar expression is de uitdrukking die moet worden geconverteerd, data_type is het nieuwe gegevenstype, en length is een optionele lengte voor het nieuwe gegevenstype.
Voorbeeld 1 – Cast slaagt
Hier is een voorbeeld van het casten van een string als decimal :
SELECT TRY_CAST('007' AS DECIMAL(5,2)); Resultaat:
7.00
In dit geval is de cast geslaagd.
Voorbeeld 2 – Cast mislukt en retourneert NULL
Hier is een voorbeeld van het mislukken van de cast en NULL wordt geretourneerd:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2)); Resultaat:
NULL
De cast is mislukt, en dus NULL is teruggestuurd.
Ter vergelijking, dit is wat er gebeurt als we CAST() gebruiken in plaats van TRY_CAST() :
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2)); Resultaat:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Voorbeeld 3 – Cast mislukt en retourneert een fout
Er zijn gevallen waarin TRY_CAST() zal een fout teruggeven.
Als casten expliciet niet is toegestaan, wordt een fout geretourneerd:
SELECT TRY_CAST(10 AS xml); Resultaat:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Meer informatie
Zie hoe CAST() Werkt in SQL Server voor meer conversievoorbeelden, en CAST() vs TRY_CAST() in SQL Server voor een vergelijking tussen CAST() en TRY_CAST() .
Zie de documentatie van Microsoft voor CAST() en CONVERT() voor meer gedetailleerde informatie (de meeste zijn ook van toepassing op TRY_CAST() ).