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.