【问题标题】:SQL server integer vs decimal SUMSQL Server 整数与十进制 SUM
【发布时间】:2011-12-30 01:11:28
【问题描述】:

这可能是一个新问题,但是...我正在研究 SQSH 中的一个数据库,它具有很大的整数类型值(人口属性)。当我想总结这些时,我得到了一个算术溢出异常。然后我将值转换为十进制,一切正常(没有溢出)。然而,我读到的所有地方都说整数和小数是一回事。那么为什么会这样呢?

提前致谢

【问题讨论】:

标签: sql sql-server integer decimal sqsh


【解决方案1】:

您有一个decimal 数据类型,其精度和小数位数大于int 数据类型的最大限制。例如,decimal(18, 0) 的容量将大于 int(最高为 2147483647)。

诚然,int 只占用 4 个字节,而且您无法通过 decimal(18, 0) 之类的内容消耗更多空间。但它会让你达到int 的最大限制。

【讨论】:

    【解决方案2】:

    整数类型是一个 4 字节的数字,最高可达 2,147,483,647。小数可以大大提高。两者都存储为整数,但小数允许一个值表示小数点后的数字。您也可以使用 BIGINT (9,223,372,036,854,775,807) 代替整数。

    【讨论】:

      【解决方案3】:

      来自在线书籍

      decimal and numeric

      decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )] 固定精度和 刻度数字。当使用最大精度时,有效值来自 - 10^38 +1 到 10^38 - 1。

      int, bigint, smallint, and tinyint

      长度为 4 个字节,存储从 -2,147,483,648 开始的数字 通过 2,147,483,647。

      因此,Decimal 可以存储比 Int 更大的值。

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 2016-08-16
        • 2012-01-14
        • 1970-01-01
        • 2013-04-18
        • 2012-04-19
        • 1970-01-01
        相关资源
        最近更新 更多