قيم النقطة العائمة الخاصة

ينطبق على:التحقق تم وضع علامة نعم على التحقق من 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