允许使用聚合表达式聚合小数值时丢失精度。
ALLOW_PRECISION_LOSS( ) 使用此函数可在可接受精度损失时提高 DECIMAL 值的聚合表达式的性能,并提高聚合的性能。
以下示例显示使用 ALLOW_PRECISION_LOSS 函数时返回值的差异:
CREATE TABLE TESTTABLE (COL1 decimal(10,5), COL2 decimal);
INSERT INTO TESTTABLE VALUES(1.139999, 1.138888888);
INSERT INTO TESTTABLE VALUES(2.119999, 2.118888888);
INSERT INTO TESTTABLE VALUES(2.119999, 2.118888888);
INSERT INTO TESTTABLE VALUES(2.669999, 2.668888888);
-- The following query, which does not allow precision loss, returns 8.01, 8.01
SELECT SUM(TO_DECIMAL(COL1,10,2)), SUM(TO_DECIMAL(COL2,10,2)) FROM TESTTABLE;
-- The following query, which uses the ALLOW_PRECISION_LOSS function to allow precision loss, returns 8.04, 8.04
SELECT ALLOW_PRECISION_LOSS(SUM(TO_DECIMAL(COL1,10,2))), ALLOW_PRECISION_LOSS(SUM(TO_DECIMAL(COL2,10,2))) FROM TESTTABLE;