Suponiendo los siguientes datos:SQL IsNumeric Devuelve True pero los informes de SQL 'Error de conversión'
Column1 (data type: varchar(50))
--------
11.6
-1
1,000
10"
Non-Numeric String
Tengo una consulta, que está tirando de datos de esta columna y le gustaría para determinar si el valor es un número, luego devolverlo como tal en mi consulta. Así que estoy haciendo lo siguiente
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then Replace(Column1,'"','') Else 0 End As NumericValue
SQL es informar: Error de conversión al convertir el valor varchar 0,6' '11 a tipo de datos int.
¿Por qué? También intenté forzar a lanzar esto:
SELECT CASE WHEN IsNumeric(Replace(Column1,'"','')) = 1 Then cast(Replace(Column1,'"','') as float) Else 0 End As NumericValue
Y obtuve: Error al convertir el tipo de datos varchar a float.
'IsNumeric()' aceptará dobles/flotantes/sencillos, etc. Además, no comprueba los desbordamientos ('99999999999999999999999999999' es numérico, no se convertirá a la mayoría de los tipos de números). La mejor práctica para el tipo de situación es que, en primer lugar, no almacena datos numéricos en campos de cadenas. –