您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

ALLOW_PRECISION_LOSS 函数(杂项)

允许使用聚合表达式聚合小数值时丢失精度。

语法

ALLOW_PRECISION_LOSS(  )

语法元素

允许精度损失的集合表达式。当前 SUM 是唯一受支持的聚合表达式。 ::= SUM ( )

描述

使用此函数可在可接受精度损失时提高 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;