我在 SQL Server 中遇到了以下错误(或功能)。
当我使用SUM (*column*)
wherecolumn
有一个numeric(18, 8)
类型并将其乘以任何其他数字(整数或小数)时,结果精度会降低到numeric(18, 6)
.
这是要演示的示例脚本。
CREATE TABLE #temp (Qnty numeric(18,8))
INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)
SELECT Qnty, 1*Qnty
FROM #temp
SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp
DROP TABLE #temp
第二次 SELECT 查询的结果
0.000000 0.00000006 -0.00000006 0.000000
如您所见,我将 SUM 相乘,结果为 0.000000
谁能解释这种奇怪的行为?
UPD。我在 2000、2005 和 2008 SQL Server 上的 SQL Management Studio 中执行了这个查询。