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í.