I SQL Server er en ofte brugt funktion CAST()
, som konverterer et udtryk af en datatype til en anden. Men hvis castet ikke lykkes, så returnerer det en fejl.
Indtast TRY_CAST()
.
TRY_CAST()
funktion returnerer ikke en fejl, hvis castet fejler. I stedet returnerer den NULL
.
Der er dog nogle tilfælde, hvor det vil returnere en fejl.
Syntaks
Syntaksen ser sådan ud:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Hvor expression
er udtrykket, der skal konverteres, data_type
er den nye datatype og length
er en valgfri længde for den nye datatype.
Eksempel 1 – Castet lykkes
Her er et eksempel på casting af en streng som decimal
:
SELECT TRY_CAST('007' AS DECIMAL(5,2));
Resultat:
7.00
I dette tilfælde lykkedes det for rollebesætningen.
Eksempel 2 – Cast fejler og returnerer NULL
Her er et eksempel på cast-fejl og NULL
bliver returneret:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));
Resultat:
NULL
Castet mislykkedes, og derfor NULL
blev returneret.
Til sammenligning er her, hvad der sker, når vi bruger CAST()
i stedet for TRY_CAST()
:
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));
Resultat:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Eksempel 3 – Cast mislykkes og returnerer en fejl
Der er nogle tilfælde, hvor TRY_CAST()
vil returnere en fejl.
Hvis en cast udtrykkeligt ikke er tilladt, returnerer den en fejl:
SELECT TRY_CAST(10 AS xml);
Resultat:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Flere oplysninger
Se hvordan CAST()
Virker i SQL Server for flere konverteringseksempler og CAST()
vs TRY_CAST()
i SQL Server til en sammenligning mellem CAST()
og TRY_CAST()
.
Se Microsofts dokumentation for CAST()
og CONVERT()
for mere detaljeret information (det meste af det gælder også for TRY_CAST()
).