【问题标题】:SQL Server 2005 decimal field behaviourSQL Server 2005 十进制字段行为
【发布时间】:2012-07-30 12:57:41
【问题描述】:

我创建了一个包含十进制类型字段 x 的简单表(28,15)

我运行以下查询来插入一个值:

插入测试表值 (1234567890123)

当我从测试表 I 中进行选择时,字段 x 的值为

1234567890123.000000000000000

有没有办法指定(可能在表设计中)如果不需要,sql server 不应该在小数点后存储零?即当进行选择时,数据将返回为

1234567890123

还有为什么insert into testtable values (12345678901234) 会出现以下错误:

将数字转换为数字数据类型时出现算术溢出错误。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    还有为什么插入测试表值(12345678901234)会出现以下错误:

    您指定的总宽度为 28,小数点后为 15 位。小数点前最多保留 13 位。

    如果不需要,有没有办法指定 sql server 不应该在小数点后存储零?

    严格来说,“十进制”是一种固定精度格式,因此任何数字都将占据与任何其他数字完全相同的空间(请参阅MSDN)。

    【讨论】:

      【解决方案2】:

      试试下面的查询。它工作正常...

         select cast(1234567890123.000000000000000 as decimal)
      

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 2010-09-17
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多