共用方式為


特殊浮點 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