Buscar este blog

viernes, 29 de julio de 2011

Evitar Errores Convirtiendo Datos Varchar a Numericos "Error converting data type varchar to float"

Amigos,

Un error tan comun como evitable cuando se convierten datos de tipo varchar a numerico es aquel que "de la nada" aparece para darnos dolores de cabeza, bajo este texto

"Error converting data type varchar to float"

Por que digo "de la nada"? Pues el error aparece cuando comenzamos a trabajar con strings que representan numeros que exceden las tres cifras enteras. Es decir con numeros superiores al 999

Supongamos que las siguientes sentencias, (tomada de un script), funcionan correctamente

-- Escenario 1, todo ok --
declare
@costminute varchar(20),
@resultado float

set @costminute = '999'

select @resultado=convert(float, @costminute)/5

... hasta que un dia... el valor de @costminute supera las tres cifras y empezamos a recibir el maldito error...

Cual seria la forma de solucionarlo?

Sencillo, reemplazando la coma del separador de miles, evitando que de este modo se produzca el error.

-- Escenario 2, todo ok solo aplicando el Replace ;) --
declare
@costminute varchar(20),
@resultado float

set @costminute = '1,200'

select @resultado=convert(float, replace(@costminute,',',''))/5

Sencillo amigos, nada de comas cuando trabajamos con este tipo de conversiones