【问题标题】:SQL Server 2005 : Converting varchar value '1.23E-4' to decimal failsSQL Server 2005:将 varchar 值“1.23E-4”转换为十进制失败
【发布时间】:2010-01-27 17:32:17
【问题描述】:
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 转换为数值时出错

有人知道为什么吗?

谢谢。

【问题讨论】:

    标签: sql sql-server-2005


    【解决方案1】:
    SELECT  @b = CONVERT(REAL, @a, 2)
    

    科学记数法仅适用于 FLOATREAL

    【讨论】:

      【解决方案2】:

      首先通过浮动进行投射。

      SQL 对十进制非常严格

      例如

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-18
        • 1970-01-01
        • 2011-08-18
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        • 2014-05-07
        • 1970-01-01
        相关资源
        最近更新 更多