ceil fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS ke atas

Mengembalikan angka terkecil yang tidak lebih kecil dari expr yang dibulatkan ke atas ke targetScale digit relatif terhadap titik desimal. Fungsi ini adalah sinonim dari fungsiceiling.

Sintaks

ceil(expr [, targetScale])

Argumen

  • expr: Ekspresi yang mengevaluasi ke numerik.
  • targetScale: BILANGAN BULAT opsional lebih besar dari -38 yang ditentukan oleh berapa banyak digit setelah titik desimal yang dibulatkan ke atas.

Mengembalikan

Jika tidak ada targetScale yang diberikan:

  • Jika expr adalah DECIMAL(p, s), mengembalikan DECIMAL(p - s + 1, 0).
  • Untuk semua kasus lain, kembalikan BIGINT.

Jika targetScale ditentukan dan expr merupakan:

  • TINYINT

    Mengembalikan DECIMAL(p, 0) dengan p = max(3, -targetScale + 1).

  • SMALLINT

    Mengembalikan DECIMAL(p, 0) dengan p = max(5, -targetScale + 1).

  • INTEGER

    Mengembalikan DECIMAL(p, 0) dengan p = max(10, -targetScale + 1)).

  • BIGINT

    Mengembalikan DECIMAL(p, 0) dengan p = max(20, -targetScale + 1)).

  • FLOAT

    Mengembalikan DECIMAL(p, s) dengan p = max(14, -targetScale + 1)) dan s = min(7, max(0, targetScale))

  • DOUBLE

    Mengembalikan DECIMAL(p, s) dengan p = max(30, -targetScale + 1)) dan s = min(15, max(0, targetScale))

  • DECIMAL(p_in, s_in)

    Mengembalikan DECIMAL(p, s) dengan p = max(p_in - s_in + 1, -targetScale + 1)) dan s = 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 atas ke angka integral berikutnya yang lebih besar.

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 ceil(-0.1);
 0

> SELECT ceil(5);
 5

> SELECT ceil(5.4);
 6

> SELECT ceil(3345.1, -2);
 3400

> SELECT ceil(-12.345, 1);
 -12.3

-- Rounding 127 to the nearest 10 produces 130, which overflows TINYINT.
> SELECT ceil(cast(127 AS TINYINT), -1);
  Error: ARITHMETIC_OVERFLOW