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