特殊浮點值
適用於:Databricks SQL Databricks Runtime
以不區分大小寫的方式處理數個特殊的浮點值:
- Inf、+Inf、Infinity、+Infinity:正無限大
- -Inf、-Infinity:負無限大
- NaN:不是數位
正數和負無限大語意
正數和負無限大具有下列語意:
- 正無限大乘以任何正值傳回正無限大。
- 負無限大乘以任何正值會傳回負無限大。
- 正無限大乘以任何負值會傳回負無限大。
- 負無限大乘以任何負值會傳回正無限大。
- 正數或負無限大乘以 0 會傳回 NaN。
- 正數或負無限大等於本身。
- 在匯總中,所有正無限值都會分組在一起。 同樣地,所有負無限值都會分組在一起。
- 正無窮大和負無窮大在關聯鍵中被視為一般值。
- 正無限大排序低於 NaN,且高於任何其他值。
- 負無限大排序會低於任何其他值。
NaN 語意
處理 float
不符合標準浮點語意的 或 double
型別時,NaN 具有下列語意:
- NaN = NaN 會傳回 true。
- 在匯總中,所有 NaN 值都會分組在一起。
- NaN 會被視為聯結索引鍵中的一般值。
- NaN 值在遞增順序中會排在最後,被視為大於任何其他數值。
範例
> 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