다음을 통해 공유


특정 부동 소수점 값

적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks 런타임

몇 가지 특수 부동 소수점 값은 대/소문자를 구분하지 않는 방식으로 처리됩니다.

  • 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