特殊浮點 values
適用於:Databricks SQL Databricks Runtime
以不區分大小寫的方式處理數個特殊的浮點 values:
- Inf、+Inf、Infinity、+Infinity:正無限大
- -Inf、-Infinity:負無限大
- NaN:不是數位
正數和負無限大語意
正數和負無限大具有下列語意:
- 正無限大乘以任何正值傳回正無限大。
- 負無限大乘以任何正值會傳回負無限大。
- 正無限大乘以任何負值會傳回負無限大。
- 負無限大乘以任何負值會傳回正無限大。
- 正數或負無限大乘以 0 會傳回 NaN。
- 正數或負無限大等於本身。
- 在匯總中,所有標示為正無窮大的 values 都會被歸為一組。 同樣地,所有負無限大 values 都會歸類在一起。
- 正無限大和負無限大會被視為正常的 values 在 join 鍵中。
- 正無限數排序低於 NaN,且高於任何其他 values。
- 負無限大排序會低於任何其他 values。
NaN 語意
處理 float
不符合標準浮點語意的 或 double
型別時,NaN 具有下列語意:
- NaN = NaN 會傳回 true。
- 在聚合中,所有 NaN values 都會分組在一起。
- NaN 會被視為 join 索引鍵中的一般值。
- NaN values 在遞增排序中將排在最後,並且大於任何其他數值。
範例
> SELECT double('infinity');
Infinity
> SELECT float('-inf');
-Infinity
> SELECT float('NaN');
NaN
> SELECT double('infinity') * 0;
NaN
> SELECT double('-infinity') * (-1234567);
Infinity
> SELECT double('infinity') < double('NaN');
true
> SELECT double('NaN') = double('NaN');
true
> SELECT double('inf') = double('infinity');
true
> SELECT COUNT(*), c2
FROM VALUES (1, double('infinity')),
(2, double('infinity')),
(3, double('inf')),
(4, double('-inf')),
(5, double('NaN')),
(6, double('NaN')),
(7, double('-infinity'))
AS test(c1, c2)
GROUP BY c2;
2 NaN
2 -Infinity
3 Infinity