【问题标题】:Precision and Scale of numeric type in sql server express 2008 R2sql server express 2008 R2中数字类型的精度和比例
【发布时间】:2011-11-15 04:29:05
【问题描述】:

我在 sql server 2008 exp r2 中将一列声明为 numeric(5,3),并且我认为它可以让我保存像 12345.123 这样的值,但是当我尝试输入大于 100 的任何值时,它给了我溢出错误。这让我相信在 numeric(5,3) 中,5 代表数字的总长度,包括精度和比例。考虑到这一点,我将列的类型更改为小数(9,3)并假设它允许我输入像 123456.123 这样的值,但它再次给出溢出错误。我无法理解 sql server 是如何解释这种数据类型及其精度和规模的。
更新:
奇怪的是,当插入数值 numeric(9,3) 时只允许输入像 1234.123 这样的值,但是在编辑行时我可以输入数值 123456.123。不知道这里发生了什么:(

【问题讨论】:

  • RE:更新,你是怎么做插入的?你有什么触发器吗?
  • 啊,是的,我确实有插入触发器。让我检查一下是否是造成问题的人

标签: sql-server-2008 sql-server-express numeric sqldatatypes


【解决方案1】:

decimal(9,3) 对于123456.123 应该可以正常工作,请重新检查!

执行

declare @d decimal(9,3) = 123456.123 

没有错误。此数据类型允许小数点左侧为 6 位,右侧为 3 位。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多