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

Dlaczego ISNUMERIC('.') zwraca 1?

Zobacz IsNumeric() jest uszkodzony? Tylko do pewnego momentu.

SELECT CAST('.' AS MONEY) 

zwraca 0.00 (chociaż rzutowanie nie powiedzie się dla int i float )

ISNUMERIC po prostu sprawdza, czy wartość może być rzutowana na dowolny z numerycznych typów danych, co jest generalnie bezużyteczne. Zwykle chcesz wiedzieć, czy można go rzutować na określony typ.

Dodatkowo wydaje się, że nawet nie wykonuje tego zadania poprawnie dla wszystkich możliwych danych wejściowych.. ISNUMERIC(' ') zwraca 0 pomimo pomyślnego rzucenia zarówno na int, jak i na pieniądze. I odwrotnie ISNUMERIC(N'8') zwraca 1 ale nie przesyła pomyślnie do niczego, czego próbowałem.

Oto kilka przydatnych funkcji pomocniczych IsNumeric, IsInt, IsNumber.

Wprowadzono SQL Server 2012 TRY_PARSE i TRY_CONVERT które bardzo w tym pomagają.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować String na Hex i odwrotnie?

  2. SQL wybierz max(data) i odpowiednią wartość

  3. Jak zainstalować sqlcmd i bcp w SUSE

  4. Różnica między lewym i prawym złączeniem w SQL Server

  5. Tabela kalendarza dla hurtowni danych