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 10.4 LTS ke atas
Mengembalikan angka terbesar yang tidak lebih besar dari expr, yang dibulatkan ke bawah ke targetScale digit relatif terhadap titik desimal.
Sintaks
floor(expr [, targetScale])
Argumen
-
expr: Ekspresi yang mengevaluasi ke numerik. -
targetScale: BILANGAN BULAT opsional lebih besar dari-38yang ditentukan oleh berapa banyak digit setelah titik desimal yang dibulatkan ke bawah.
Mengembalikan
Jika tidak ada targetScale yang diberikan:
- Jika
expradalahDECIMAL(p, s), mengembalikanDECIMAL(p - s + 1, 0). - Untuk semua kasus lain, kembalikan BIGINT.
Jika targetScale ditentukan dan expr merupakan:
TINYINTMengembalikan
DECIMAL(p, 0)denganp = max(3, -targetScale + 1).SMALLINTMengembalikan
DECIMAL(p, 0)denganp = max(5, -targetScale + 1).INTEGERMengembalikan
DECIMAL(p, 0)denganp = max(10, -targetScale + 1)).BIGINTMengembalikan
DECIMAL(p, 0)denganp = max(20, -targetScale + 1)).FLOATMengembalikan
DECIMAL(p, s)denganp = max(14, -targetScale + 1))dans = min(7, max(0, targetScale))DOUBLEMengembalikan
DECIMAL(p, s)denganp = max(30, -targetScale + 1))dans = min(15, max(0, targetScale))DECIMAL(p_in, s_in)Mengembalikan
DECIMAL(p, s)denganp = max(p_in - s_in + 1, -targetScale + 1))dans = min(s_in, max(0, targetScale))
Jika targetScale negatif, pembulatan dilakukan ke -targetScale digit di sebelah kiri titik desimal.
Defaultnya targetScale adalah 0, yang dibulatkan ke bawah ke angka integral berikutnya yang lebih kecil.
Ketika targetScale ditentukan dengan jenis input integral, Azure Databricks menaikkan ARITHMETIC_OVERFLOW jika hasilnya meluapkan jenis output.
Peringatan
Dalam Databricks Runtime, jika spark.sql.ansi.enabled adalah false, luapan tidak menyebabkan kesalahan tetapi "membungkus" hasilnya sebagai gantinya.
Kondisi kesalahan umum
Contoh
> SELECT floor(-0.1);
-1
> SELECT floor(5);
5
> SELECT floor(3345.1, -2);
3300
> SELECT floor(-12.345, 1);
-12.4
-- Rounding -128 to the nearest 10 produces -130, which overflows TINYINT.
> SELECT floor(cast(-128 AS TINYINT), -1);
Error: ARITHMETIC_OVERFLOW