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

Proč ISNUMERIC('.') vrací 1?

Viz IsNumeric() Broken? Pouze do určitého bodu.

SELECT CAST('.' AS MONEY) 

vrátí 0.00 (ačkoli přetypování se nezdaří pro int a float )

ISNUMERIC pouze zkontroluje, že hodnotu lze přetypovat na jakýkoli z číselných datových typů, což je obecně k ničemu. Obvykle chcete vědět, zda jej lze přetypovat na konkrétní typ.

Navíc se ani nezdá, že by tento úkol prováděl správně pro všechny možné vstupy. ISNUMERIC(' ') vrátí 0 navzdory úspěšnému castingu do int i peněz. Naopak ISNUMERIC(N'8') vrátí 1 ale neodesílá úspěšně nic, co jsem zkoušel.

Některé užitečné pomocné funkce jsou zde IsNumeric, IsInt, IsNumber.

SQL Server 2012 představil TRY_PARSE a TRY_CONVERT které s tím velmi pomáhají.



  1. Nebyl nalezen žádný vhodný ovladač pro 'jdbc:mysql://localhost:3306/mysql

  2. Jak vytvořit alias pole nebo sloupce v MySQL?

  3. Vytvořte sloupec kumulativního součtu v MySQL

  4. Cyklus přes kroužek schránky v SQL Server Management Studio (SSMS) – SQL Server / Výukový program TSQL, část 8