我有表的结构如下:
Table1 (
id int NULL,
description varchar(50) null,
rate decimal(18,15) NULL
)
当我测试插入数据到表中时,问题值如下:
insert into Table1 (id, description, rate)
values (1, 'My Room Upstair', 38397.0893181818)
错误是这样的:
消息8115,级别16,状态8,第1行将numeric转换为数据类型numeric时发生算术溢出错误。
但是当我使用浮点数据类型时,数据插入成功,但是速率值变成了不同的值。
我需要建议...
十进制数据类型问题求解
1条答案
按热度按时间lp0sw83n1#
问题是您没有正确使用decimal数据类型。
数据类型定义如下
decimal(a, b)
。a用于指定值中的位数。默认值为18,但您可以选择1(最小值)和38(最大值)之间的任意数字。
B用于表示小数点后的位数。默认值为0,但您可以指定在最小值和最大值之间进行选择,这两个值分别为1和38。只有同时指定了a,才能指定b。它必须等于或小于a。
在示例中decimal(18,15),您可以插入一个18位长的数字,小数点前3位,小数点后15位。38397.0893181818在小数点前有5位,这就是您得到错误的原因。因此,如果您需要添加38397.0893181818,您需要decimal(15,10),因为该数有15位,其中10位在小数点之后。