问题原因可能是超大数精度问题导致的,可以通过以下代码示例进行优化处理:
WITH data AS ( SELECT 123456789012345678901234567890123456.789 AS num1, 123456789012345678901234567890.123 AS num2 UNION ALL SELECT 123456789012345678901234567890123456.789, 123456789012345678901234567890.123 UNION ALL SELECT 123456789012345678901234567890123456.789, 123456789012345678901234567890.123 ), temp AS ( SELECT CAST(num1 AS NUMERIC) AS num1_decimal, CAST(num2 AS NUMERIC) AS num2_decimal FROM data ) SELECT num1_decimal - num2_decimal AS result FROM temp;
通过将带有超大数的列强制转换成 NUMERIC 类型,再进行减法操作,可以避免数值精度损失的问题。