Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak TRY_CAST() działa w SQL Server

W SQL Server często używaną funkcją jest CAST() , który przekształca wyrażenie jednego typu danych na inny. Ale jeśli rzutowanie się nie powiedzie, zwróci błąd.

Wpisz TRY_CAST() .

TRY_CAST() funkcja nie zwraca błędu, jeśli rzutowanie się nie powiedzie. Zamiast tego zwraca NULL .

Są jednak sytuacje, w których zwróci błąd.

Składnia

Składnia wygląda tak:

TRY_CAST ( expression AS data_type [ ( length ) ] )

Gdzie expression jest wyrażeniem do konwersji, data_type to nowy typ danych, a length to opcjonalna długość dla nowego typu danych.

Przykład 1 – Cast udaje się

Oto przykład rzutowania łańcucha jako decimal :

SELECT TRY_CAST('007' AS DECIMAL(5,2));

Wynik:

7.00

W tym przypadku obsada się powiodła.

Przykład 2 – Nieudane rzutowanie i zwracanie NULL

Oto przykład niepowodzenia rzutowania i NULL zwracany:

SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));

Wynik:

NULL

Przesyłanie nie powiodło się, więc NULL został zwrócony.

Dla porównania, oto co się dzieje, gdy używamy CAST() zamiast TRY_CAST() :

SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));

Wynik:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.

Przykład 3 – Cast kończy się niepowodzeniem i zwraca błąd

W niektórych przypadkach TRY_CAST() zwróci błąd.

Jeśli rzutowanie jest wyraźnie niedozwolone, zwraca błąd:

SELECT TRY_CAST(10 AS xml);

Wynik:

Msg 529, Level 16, State 2, Line 1
Explicit conversion from data type int to xml is not allowed.

Więcej informacji

Zobacz, jak CAST() Działa w SQL Server, aby uzyskać więcej przykładów konwersji i CAST() vs TRY_CAST() w SQL Server w celu porównania funkcji CAST() i TRY_CAST() .

Zobacz dokumentację Microsoft dla CAST() i CONVERT() aby uzyskać bardziej szczegółowe informacje (większość z nich dotyczy również TRY_CAST() ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podstawy automatyzacji zadań SQL Server

  2. ExecuteReader wymaga otwartego i dostępnego połączenia. Obecny stan połączenia to Łączenie

  3. Jak ustawić poniedziałek jako pierwszy dzień tygodnia w SQL Server

  4. Jak wygenerować plan wykonania w SQL Server

  5. Jak usunąć nagłówki kolumn podczas wysyłania wyników zapytania pocztą e-mail w programie SQL Server (T-SQL)