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()
).