我的字段费用为0.987878656435798654
,0.765656787898767
我试图弄清楚这是什么数据类型。
当我提供decimal 15,15
并尝试加载数据时,它会给我一个错误
将varchar转换为数据类型numeric的算术溢出错误。
答案 0 :(得分:3)
问题是你没有在小数之前为值分配任何长度。
DECIMAL (15, 15)
表示它在小数点后的精度为15位,但总共只有15位数的空间 - 因此不会留有大于1
的值的空间。
这意味着DECIMAL (15, 15)
仅支持以下范围内的值:
-0.999999999999999
到0.999999999999999
(小数点后15位)。
您的第一个示例中有18
个数字,因此我建议使用DECIMAL (21, 18)
DECIMAL (21, 18)
将支持以下范围内的值:-999.999999999999999999
到999.999999999999999999
(小数点后18位)。
但是,您应该分析自己的数据,看看您需要支持的最大值。
答案 1 :(得分:0)
试试这个......
SELECT LEN(YourColumn)
FROM YourTable
然后,如果它们每次低于1,请尝试这个......
SELECT CONVERT(DECIMAL(X,X-1),YourColumn)
其中X是LEN语句中返回的内容。而X-1比那还要少。
请记住,它是DECIMAL(TotalLength,Precision)
所以你需要确保有足够的空间来存放总价值。