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

在SQL 2005環境下執行上面的sql代碼時出現以下錯誤。SQL Server 2005:將varchar值'1.23E-4'轉換爲十進制失敗

錯誤轉換數據類型爲varchar到數字

任何人知道這是爲什麼?

謝謝。

回答

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

科學記數法僅適用於FLOATREAL

1

先通過浮動投射。

SQL是很嚴格的十進制

SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0 
SELECT CAST('' AS decimal) --error 
相關問題