2010-01-27 13 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 

durante l'elaborazione di codice SQL precedente in ambiente SQL 2005, ricevo un errore successivo.SQL Server 2005: Conversione del valore varchar '1.23E-4' in decimale fallisce

Errore che converte il tipo di dati varchar in numerico

qualcuno sa perché?

grazie.

risposta

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

notazione scientifica funziona solo su FLOAT e REAL.

1

eseguire il cast prima per prima.

SQL è molto severo su decimale

esempio

SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0 
SELECT CAST('' AS decimal) --error 
Problemi correlati