处理 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.4E383.4E38 的范围(对 -99.99999.999).

DECIMAL 更适合财务数据或其他数据,其中精确相等很重要(即舍入误差不好)