Ver IsNumeric() roto? Solo hasta cierto punto.
SELECT CAST('.' AS MONEY)
devuelve 0.00 (aunque el lanzamiento falla para int y float )
ISNUMERIC solo verifica que el valor se pueda convertir a cualquiera de los tipos de datos numéricos, lo que generalmente es inútil. Por lo general, desea saber si se puede convertir a un tipo específico.
Además, ni siquiera parece hacer esa tarea correctamente para todas las entradas posibles. ISNUMERIC(' ') devuelve 0 a pesar de lanzar con éxito tanto a int como a money. Por el contrario ISNUMERIC(N'8') devuelve 1 pero no lanza con éxito nada de lo que probé.
Algunas funciones de ayuda útiles para eso están aquí IsNumeric, IsInt, IsNumber.
SQL Server 2012 introdujo TRY_PARSE y TRY_CONVERT que ayudan mucho con esto.