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转换为数字
时出错 谁知道为什么?感谢。
答案 0 :(得分:10)
SELECT @b = CONVERT(REAL, @a, 2)
科学记数法仅适用于FLOAT
和REAL
。
答案 1 :(得分:1)
首先通过浮动投射。
SQL对十进制非常严格
例如
SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0
SELECT CAST('' AS decimal) --error