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

如何在sql server中将浮点字段转换为十进制?

  •  1
  • Goows  · 技术社区  · 17 年前

    “将浮点转换为数字数据类型时出现算术溢出错误。 我的字段是表中的十进制(11,2),我的最大值和最小值是:1603837393.70<-&燃气轮机-1688000000.00(金额)。

    既然我的值没有超出我的类型的范围,我想知道为什么不能在select语句上强制转换如下:

    select Id,AccountId, cast(Amount as decimal(12,2)) as Amount,
    cast(AmountB as decimal(12,2)) as  AmountB
    FROM myTable
    

    我无法确定不转换字段的原因。

    3 回复  |  直到 17 年前
        1
  •  5
  •   marc_s MisterSmith    17 年前

    也许你误解了 decimal(11,2) 作品这意味着总共有11位数字-小数点左侧9位,右侧2位。

    MSDN docs for decimal and numeric types

    十进制[(p[,s])]和数字[(p[,s])]

    p(精度)

    小数点的左边和右边 .

        2
  •  0
  •   Steve Kass    17 年前

    你的问题简直令人困惑。您说“我的字段是表中的十进制(11,2)”,但这与您所说的最大值和最小值相矛盾,它们不在十进制(11,2)的范围内。如果您引用的错误来自您提供的SELECT查询,则Amount或AmountB的值超出了可以用decimal(12,2)类型表示的值范围:-9999999999.99到9999999999.99。

    select
      min(Amount) as minAmount,
      max(Amount) as maxAmount,
      min(AmountB) as minAmountB,
      max(AmountB) as maxAmountB
    from myTable
    
        3
  •  0
  •   Jonathan Leffler    17 年前

    检查字段类型。他们说得对吗?