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
Mi nombre es Gustavo Herrera. Me desempeño profesionalmente como DBA especializado en Microsoft Sql Server, formo parte activamente de la Comunidad Sql Server de Argentina (comunidad oficial de Microsoft). La idea de este blog es generar un vínculo más de intercambio con uds., mis queridos colegas. Espero que se sientan a gusto, pasen, vean, opinen, comenten, critiquen, aporten.. este blog lo hacemos entre todos.