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