SQL 由于精度原因,结果列没有显示任何值?

SQL result column showing no value due to precision?

这是 PostgreSQL 中的一个查询:

SELECT 25/8175133

结果显示为 0,而实际值为 0.00000305805

我试过了

SELECT CAST(25/8175133 AS DECIMAL)
SELECT CAST(25/8175133 AS AS DOUBLE PRECISION)

但似乎没有任何效果。 有没有办法在我们的 SELECT 输出中显示非常低的分数值?

SELECT 25/8175133 :: decimal => 0.000003058054223704984372

SELECT 25/8175133 :: double precision => 3.0580542237049843e-06

SELECT 25/8175133 :: numeric => 0.000003058054223704984372

尝试ROUND

 Select round(25/8175133::decimal, 11);

参考此示例输出 http://sqlfiddle.com/#!17/77c08/41

Postgres 正在尝试 return 给你你提供的相同类型。您也可以这样解决:

SELECT 25.0/8175133;

当 PostgreSQL 将两个整数值相除时,结果是一个整数。如果您想要小数位,您需要至少包含一个带小数位的操作数。

你可以这样做:

SELECT 1.0 * 25/8175133

或:

SELECT 25.0/8175133

结果:

?column?
--------
0.000003058054223704984372