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

Jak funguje TRY_CAST() na serveru SQL

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


  1. Jak provést stejnou agregaci na každém sloupci, aniž byste uváděli sloupce?

  2. Jak zobrazit hodnoty řádků jako sloupce v MySQL

  3. Jak zjistit a zabránit neočekávanému nárůstu SQL Server databáze TempDB

  4. Jak nastavit znakovou sadu a řazení databáze v MySQL