V SQL Server je často používaná funkce CAST() , který převádí výraz jednoho datového typu na jiný. Pokud se však odeslání nezdaří, vrátí chybu.
Zadejte TRY_CAST() .
TRY_CAST() funkce nevrací chybu, pokud se přetypování nezdaří. Místo toho vrátí NULL .
Existují však případy, kdy vrátí chybu.
Syntaxe
Syntaxe vypadá takto:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Kde expression je výraz, který se má převést, data_type je nový datový typ a length je volitelná délka pro nový datový typ.
Příklad 1 – Obsazení úspěšné
Zde je příklad přetypování řetězce jako decimal :
SELECT TRY_CAST('007' AS DECIMAL(5,2)); Výsledek:
7.00
V tomto případě se obsazení povedlo.
Příklad 2 – Cast selže a vrátí NULL
Zde je příklad selhání obsazení a NULL se vrací:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2)); Výsledek:
NULL
Odeslání se nezdařilo, a proto NULL byl vrácen.
Pro srovnání zde uvádíme, co se stane, když použijeme CAST() místo TRY_CAST() :
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2)); Výsledek:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Příklad 3 – Cast selže a vrátí chybu
Existují případy, kdy TRY_CAST() vrátí chybu.
Pokud přetypování není výslovně povoleno, vrátí chybu:
SELECT TRY_CAST(10 AS xml); Výsledek:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Další informace
Viz Jak CAST() Funguje na serveru SQL Server pro další příklady převodu a CAST() vs TRY_CAST() v SQL Server pro porovnání mezi CAST() a TRY_CAST() .
Viz dokumentaci společnosti Microsoft pro CAST() a CONVERT() pro podrobnější informace (většina z nich platí také pro TRY_CAST() ).