代码之家  ›  专栏  ›  技术社区  ›  N30

SQL Server 2005:将varchar值“1.23e-4”转换为十进制失败

  •  9
  • N30  · 技术社区  · 16 年前
    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转换为numeric时出错

    有人知道为什么吗?

    谢谢。

    2 回复  |  直到 11 年前
        1
  •  10
  •   Quassnoi    16 年前
    SELECT  @b = CONVERT(REAL, @a, 2)
    

    科学记数法只适用于 FLOAT REAL .

        2
  •  1
  •   gbn    16 年前

    先通过浮筒浇铸。

    SQL对十进制很严格

    SELECT CAST('' AS float), CAST('' AS int), CAST('' AS float) --0
    SELECT CAST('' AS decimal) --error
    
    推荐文章