十进制字段

时间:2016-09-16 19:14:20

标签: sql sql-server-2008

我的字段费用为0.9878786564357986540.765656787898767 我试图弄清楚这是什么数据类型。

当我提供decimal 15,15并尝试加载数据时,它会给我一个错误

  

将varchar转换为数据类型numeric的算术溢出错误。

2 个答案:

答案 0 :(得分:3)

问题是你没有在小数之前为值分配任何长度。

DECIMAL (15, 15)表示它在小数点后的精度为15位,但总共只有15位数的空间 - 因此不会留有大于1的值的空间。

这意味着DECIMAL (15, 15)仅支持以下范围内的值: -0.9999999999999990.999999999999999(小数点后15位)。

您的第一个示例中有18个数字,因此我建议使用DECIMAL (21, 18)

之类的内容

DECIMAL (21, 18)将支持以下范围内的值:-999.999999999999999999999.999999999999999999(小数点后18位)。

但是,您应该分析自己的数据,看看您需要支持的最大值。

答案 1 :(得分:0)

试试这个......

SELECT LEN(YourColumn)
FROM YourTable

然后,如果它们每次低于1,请尝试这个......

SELECT CONVERT(DECIMAL(X,X-1),YourColumn)

其中X是LEN语句中返回的内容。而X-1比那还要少。

请记住,它是DECIMAL(TotalLength,Precision)所以你需要确保有足够的空间来存放总价值。