V SQL Server, TRY_CONVERT() funkce je velmi podobná funkci CONVERT() funkce kromě toho TRY_CONVERT() nevrací chybu, pokud se převod nezdaří (CONVERT() dělá).
Místo toho TRY_CONVERT() funkce vrací NULL pokud se převod nezdaří.
Existují však případy, kdy TRY_CONVERT() vrátí chybu.
Syntaxe
Syntaxe vypadá takto:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
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.
Volitelný style argument lze použít k určení, jak má funkce přeložit expression argument. Tento argument můžete například použít k určení formátu data.
Příklad 1 – Konverze je úspěšná
Zde je příklad převodu řetězce na desítkové:
SELECT TRY_CONVERT(DECIMAL(5,2), '007'); Výsledek:
7.00
V tomto případě byla konverze úspěšná.
Příklad 2 – Převod selže a vrátí NULL
Zde je příklad selhání převodu a NULL se vrací:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three'); Výsledek:
NULL
Převod se nezdařil, a proto NULL byl vrácen.
Pro srovnání, zde je to, co se stane, když použijeme CONVERT() místo TRY_CONVERT() :
SELECT CONVERT(DECIMAL(5,2), 'Three'); Výsledek:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Příklad 3 – Převod selže a vrátí chybu
Existují případy, kdy TRY_CONVERT() vrátí chybu.
Pokud konverze není výslovně povolena, vrátí chybu:
SELECT TRY_CONVERT(xml, 10); Výsledek:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Příklad 4 – style Argument
Můžeme použít volitelný style argument k určení, jak má být výraz přeložen.
Příklad:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German"; Výsledek:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Zde jsem nastavil svůj jazyk na British a poté spusťte TRY_CONVERT() několikrát, každý pomocí jiného style argument (kromě prvního, který používá výchozí jazyk mé relace – britský).
Vidíme, že argument style ovlivňuje způsob překladu výrazu.
Další informace
Viz CONVERT() v SQL Server pro další příklady převodu a CONVERT() vs TRY_CONVERT() v SQL Server pro porovnání mezi CONVERT() a TRY_CONVERT() .
Viz dokumentaci společnosti Microsoft pro CAST() a CONVERT() pro podrobnější informace (většina z nich platí také pro TRY_CONVERT() ).