为什么我不能在小数字段中输入整数值?

发布于 2024-08-28 21:10:17 字数 281 浏览 3 评论 0原文

我正在尝试为 SQL Server 表编写一条插入语句,将值 1 插入到小数字段中。该字段的类型为decimal(10, 10),据我了解,这意味着它最多可以有10位数字,其中小数点后最多可以有10位数字。但是,当我尝试运行插入语句时,出现以下错误:

Arithmetic overflow error converting int to data type numeric.

如果我将字段的数据类型更改为十进制(11, 10),它会突然起作用。我在这里不明白什么?我做错了什么?

I'm trying to write an insert statement for a SQL Server table that inserts the value 1 into a decimal field. The field is of the type decimal(10, 10) which, as far as I understand, means that it can have up to 10 digits altogether, and up to 10 of those digits can be after the decimal point. But, when I try to run the insert statement I get the following error:

Arithmetic overflow error converting int to data type numeric.

If I change the data type of the field to decimal(11, 10), it suddenly works. What am I not understanding here? What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情未る 2024-09-04 21:10:17

decimal(10, 10) 表示所有小数位,小数点左边没有数字!

请参阅此处: http://msdn.microsoft.com/en -us/library/aa258832(SQL.80).aspx_

十进制[(p[, s])]

p(精度)指定小数位数的最大总数
可以存储,都在左侧
和小数点右边。
精度必须是从 1 开始的值
通过最大精度。这
最大精度为 38。默认值
精度为 18。

s(小数位数) 指定可显示的最大小数位数
存储在小数点右边
观点。比例必须是从 0 开始的值
通过 p.只能指定比例
如果指定了精度。默认
比例尺为 0;因此,0 <= s <= p。
最大存储大小有所不同,具体取决于
精度。

decimal(11,10) 为您提供小数点左侧 1 位数字和右侧 10 位数字,因此现在适合整数 1!

编辑

使用时:decimal(p,s),将p视为总共有多少位(无论小数点左边还是右边) 您想要存储的内容,以及 s 表示小数点右侧应有多少 p 数字。

DECIMAL(10,5)=     12345.12345
DECIMAL(10,2)=  12345678.12
DECIMAL(10,10)=         .1234567891
DECIMAL(11,10)=        1.1234567891

decimal(10, 10) means all decimal places, no digits to the left of the decimal point!

see here: http://msdn.microsoft.com/en-us/library/aa258832(SQL.80).aspx_

decimal[(p[, s])]

p (precision) Specifies the maximum total number of decimal digits
that can be stored, both to the left
and to the right of the decimal point.
The precision must be a value from 1
through the maximum precision. The
maximum precision is 38. The default
precision is 18.

s (scale) Specifies the maximum number of decimal digits that can be
stored to the right of the decimal
point. Scale must be a value from 0
through p. Scale can be specified only
if precision is specified. The default
scale is 0; therefore, 0 <= s <= p.
Maximum storage sizes vary, based on
the precision.

decimal(11,10) gives you 1 digit the the left of the decimal and 10 to the right, so integer 1 fits now!

EDIT

when using: decimal(p,s), think of p as how many total digits (regardless of left or right of the decimal point) you want to store, and s as how many of those p digits should be to the right of the decimal point.

DECIMAL(10,5)=     12345.12345
DECIMAL(10,2)=  12345678.12
DECIMAL(10,10)=         .1234567891
DECIMAL(11,10)=        1.1234567891
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文