sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué ISNUMERIC('.') devuelve 1?

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.