Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Beberapa nilai floating point khusus diperlakukan dengan cara yang tidak memperhatikan huruf besar/kecil.
- Inf, +Inf, Infinity, +Infinity: tak terhingga positif
- -Inf, -Infinity: negatif tak terhingga
- NaN: bukan angka
Semantik tak terhingga positif dan negatif
Ketakterhinggaan positif dan negatif memiliki arti sebagai berikut:
- Tak terhingga positif dikalikan dengan nilai positif menghasilkan tak terhingga positif.
- Tak terhingga negatif dikalikan dengan nilai positif menghasilkan tak terhingga negatif.
- Tak terhingga positif yang dikalikan dengan nilai negatif akan menghasilkan tak terhingga negatif.
- Nilai negatif tak terhingga dikalikan dengan nilai negatif mana pun menghasilkan nilai positif tak terhingga.
- Tak terhingga, baik positif maupun negatif, jika dikalikan dengan 0 akan menghasilkan NaN.
- Tak terhingga positif atau negatif sama dengan dirinya sendiri.
- Dalam agregasi, semua nilai tak terhingga positif dikelompokkan bersama. Demikian pula, semua nilai tak terhingga negatif dikelompokkan bersama.
- Bilangan tak hingga positif dan bilangan tak hingga negatif diperlakukan sebagai nilai normal dalam kunci gabungan.
- NaN memiliki urutan lebih rendah dari positif tak terhingga, yang juga lebih tinggi dari nilai lainnya.
- Minus tak berhingga diurutkan lebih rendah daripada nilai lainnya.
Semantik NaN
Saat berhadapan dengan jenis float atau double yang tidak benar-benar cocok dengan semantik titik kambang standar, NaN memiliki semantik berikut:
- NaN = NaN menghasilkan benar.
- Dalam agregasi, semua nilai NaN dikelompokkan bersama.
- NaN diperlakukan sebagai nilai normal dalam kunci gabungan.
- Nilai NaN ditempatkan terakhir ketika dalam urutan naik, lebih besar dari nilai numerik lainnya.
Contoh
> 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