2010-01-27 6 views
9
declare @a varchar(40) 
set @a='1.23e-4' 
declare @b decimal(27,12) 

if isnumeric(@a) =1 
begin 

    select @b=cast(@a as decimal(27,12)) 

end 
else 
begin 
    select @b=-1 
end 

select @b 

al ejecutar el código sql anterior en el entorno SQL 2005 me aparece el siguiente error.SQL Server 2005: Convertir el valor varchar '1.23E-4' a decimal falla

Error que convierte el tipo de datos varchar a numérico

alguien sabe por qué?

gracias.

Respuesta

9
SELECT @b = CONVERT(REAL, @a, 2) 

La notación científica sólo funciona en FLOAT y REAL.

1

fundido a través del flotador primero.

SQL es bastante estricto sobre decimal

por ejemplo

SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0 
SELECT CAST('' AS decimal) --error 
Cuestiones relacionadas