sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje TRY_CONVERT() na serveru SQL Server

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


  1. Jak vložit data do tabulky pomocí uložených procedur v postgresql

  2. Co přesně dělá GRANT USAGE ON SCHEMA?

  3. Přidejte 2 měsíce k aktuálnímu časovému razítku

  4. Co znamená klíčové slovo KEY?