处理 SQL 中的变量 DECIMAL 数据
Handling variable DECIMAL data in SQL
我有计划每月从遗留系统中提取数据。数据有时会膨胀和收缩。这会对 DECIMAL
精度造成严重破坏。
我刚刚发现这项工作失败了,因为 DECIMAL(5,3)
限制太多。我把它改成了DECIMAL(6,3)
,生活又回到了正轨。
是否有任何方法可以评估此移动数据,使其不会在 DECIMAL()
上中断?
谢谢,
-艾伦
Is there any way to evaluate this shifting data so it doesn't break on the DECIMAL()
找到您的数据可以具有的最大值并适当地设置列大小。
小数列有两个大小因子:小数位数和精度。将您的精度设置为您需要的尽可能多的 deimal 步速(在您的情况下为 3),并根据您可以拥有的最大可能数量设置比例。
一个DECIMAL(5,3)
有小数点后三位的精度,总共有5位,所以它最多可以存储99.999
的数字。如果您的数据可以是 100 或更大,请使用更大的比例。
如果您的数据本质上是科学的(例如温度读数)并且您不关心精确相等性,只显示趋势、相对值等)那么您可能使用 real
代替。它比 DECIMAL(5,3)
占用的 space 更少(4 个字节对 5 个字节),具有 7 位精度(对 5 个字节)和 -3.4E38
到 3.4E38
的范围(对 -99.999
到 99.999
).
DECIMAL
更适合财务数据或其他数据,其中精确相等很重要(即舍入误差不好)
我有计划每月从遗留系统中提取数据。数据有时会膨胀和收缩。这会对 DECIMAL
精度造成严重破坏。
我刚刚发现这项工作失败了,因为 DECIMAL(5,3)
限制太多。我把它改成了DECIMAL(6,3)
,生活又回到了正轨。
是否有任何方法可以评估此移动数据,使其不会在 DECIMAL()
上中断?
谢谢,
-艾伦
Is there any way to evaluate this shifting data so it doesn't break on the DECIMAL()
找到您的数据可以具有的最大值并适当地设置列大小。
小数列有两个大小因子:小数位数和精度。将您的精度设置为您需要的尽可能多的 deimal 步速(在您的情况下为 3),并根据您可以拥有的最大可能数量设置比例。
一个DECIMAL(5,3)
有小数点后三位的精度,总共有5位,所以它最多可以存储99.999
的数字。如果您的数据可以是 100 或更大,请使用更大的比例。
如果您的数据本质上是科学的(例如温度读数)并且您不关心精确相等性,只显示趋势、相对值等)那么您可能使用 real
代替。它比 DECIMAL(5,3)
占用的 space 更少(4 个字节对 5 个字节),具有 7 位精度(对 5 个字节)和 -3.4E38
到 3.4E38
的范围(对 -99.999
到 99.999
).
DECIMAL
更适合财务数据或其他数据,其中精确相等很重要(即舍入误差不好)