SQL Server 2005:将varchar值'1.23E-4'转换为十进制失败

时间:2010-01-27 17:32:17

标签: sql sql-server-2005

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代码时,我收到以下错误。

将数据类型varchar转换为数字

时出错 谁知道为什么?

感谢。

2 个答案:

答案 0 :(得分:10)

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

科学记数法仅适用于FLOATREAL

答案 1 :(得分:1)

首先通过浮动投射。

SQL对十进制非常严格

例如

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