De TRY_CAST funktionen i SQL Server används att kasta värde från sin befintliga datatyp till en viss måldatatyp. Detta sker endast om åtgärden är framgångsrik. Den returnerar NULL om konvertering misslyckas. TRY_CAST är en utökad version av CAST-funktionen. Denna handledning förklarar hur man använder TRY_CAST i SQL Server.
TRY_CAST anser att värdet har passerat och dess befintliga datatyp och försöker konvertera det till en viss måldatatyp. Om konverteringsoperationen är tillåten returnerar den värdet i den angivna måldatatypen. Om operationen inte konverterar värdet returneras NULL som en utgång.
TRY_CAST inkluderades först med Microsoft SQL Server 2012-upplagan.
Syntax för TRY_CAST
TRY_CAST (Uttryck som mål_data_type [längd])
Uttryck: Värde som ska kastas till en måldatatyp
Mål datatyp: Datatypen där värdet ska kastas
Längd: Valfri parameter, för att ange längden på datatypen
Begränsningar för att använda CAST i SQL Server
När vi använder CAST kommer vi att få ett fel om omvandlingen misslyckas från källa till måldatatyp. Om det inte är tillåtet kan detta bryta koden. Således rekommenderas att använda TRY_CAST istället för CAST.
I följande exempel försöker jag CAST ett strängvärde till ett heltal, vilket är en felaktig konvertering. CAST misslyckas med att slutföra konverteringen och returnerar ett fel. TRY_CAST returnerar emellertid NULL när omvandlingen misslyckas att slutföra.
VÄLJ CAST ('Tech-Recept' som INT) som CastExample;
Msg 245, Nivå 16, Stat 1, Linje 1
Konvertering misslyckades vid omräkning av varchar-värdet 'Tech-Recipes' till datatyp int.
Använd TRY_CAST för att undvika att SQL Server hämtar ett fel om konvertering av datatypen misslyckas.
VÄLJ TRY_CAST ('Tech-Recept' som INT) som TryCastExample;
TryCastExample -------------- NULL
Exempel med TRY_CAST
1. Felaktig användning av TRY_CAST (returnerar NULL)
Exemplet nedan visar att när det misslyckas returnerar TRY_CAST NULL istället för att höja ett fel som CAST gör.
VÄLJ CASE när TRY_CAST ('Tech-Recipes.com' AS INT) ÄR NULL, ÄR 'Konverteringen misslyckades' ÖVRIGT 'Omvandling Framgångsrikt' END;
2. Framgångsrik omvandling med hjälp av TRY_CAST
Exemplet nedan visar att TRY_CAST fullbordar en lyckad omvandling om den får konvertera till en riktade datatyp.
SELECT CASE när TRY_CAST (1234 AS DECIMAL (18,2)) ÄR NULL DÄR "Konvertering misslyckades" ÖVRIGT "Konvertering Framgångsrikt" END;
3. Explicit konvertering med TRY_CAST (ej tillåtet)
Exemplet nedan visar att TRY_CAST inte får utföra en explicit konvertering. TRY_CAST kastar ett fel.
Msg 529, Nivå 16, Stat 2, Linje 1
Explicit konvertering från datatyp int till xml är inte tillåtet.
Sammanfattning
TRY_CAST kan användas i stället för CAST-funktionen för att undvika att casta ett fel utan att använda TRY-CATCH block. Exemplen som används i denna handledning visar hur du använder TRY_CAST-funktionen i SQL Server.