我有一个字段成本值0.987878656435798654
,0.765656787898767
我想弄清楚这是什么数据类型。小数字段上的算术溢出错误
当我给decimal 15,15
并试图加载它扔我一个错误
算术溢出错误转换VARCHAR数据类型的数字数据。
我有一个字段成本值0.987878656435798654
,0.765656787898767
我想弄清楚这是什么数据类型。小数字段上的算术溢出错误
当我给decimal 15,15
并试图加载它扔我一个错误
算术溢出错误转换VARCHAR数据类型的数字数据。
问题是你没有分配任何长度到的值之前的小数点。
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位数字)。
但是,您应该分析自己的数据,看看您需要支持的最大值。
尝试......
SELECT LEN(YourColumn)
FROM YourTable
然后,如果它们低于1每一次,试试这个...
SELECT CONVERT(DECIMAL(X,X-1),YourColumn)
其中X是什么在LEN语句返回。而X-1比那少了一个。
请记住,它是DECIMAL(TotalLength,Precision)
所以你需要确保有足够的空间来获得总价值。
谢谢你Siyual。有效。 – swathi
除非你不需要更多的小数,记住从10到19位数,该字段使用9个字节,从20到28它使用13,所以你可以使用'DECIMAL(28,25)'(for例如),使用相同数量的存储字节获得更高精度(来源:https://msdn.microsoft.com/en-us/library/ms187746.aspx)。您也可以考虑使用金钱类型:https://msdn.microsoft.com/en-us/library/ms179882.aspx,虽然它只有4位小数位(通常绰绰有余,可能不是您的案件)。 – Andrew
我的字段中的数据长度是14 13我仍然得到该错误。我不确定我做错了什么。 请帮忙吗? – swathi