floor işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 10.4 LTS ve üzeri

Ondalık ayırıcıya göre basamaklara expr yuvarlanmış olandan targetScale büyük olmayan en büyük sayıyı döndürür.

Söz dizimi

floor(expr [, targetScale])

Bağımsız değişkenler

  • expr: Sayısal olarak değerlendirilen ifade.
  • targetScale: Ondalık ayırıcıdan sonra aşağı yuvarlanacak basamak sayısıyla belirtilenden -38 daha büyük isteğe bağlı TAMSAYı değişmez değeri.

Döndürülenler

Hayır targetScale ise:

  • ise exprDECIMAL(p, s), döndürür DECIMAL(p - s + 1, 0).
  • Diğer tüm durumlarda bir BIGINT döndürür.

Belirtilirse targetScale ve expr bir ise:

  • TINYINT

    ile bir DECIMAL(p, 0)p = max(3, -targetScale + 1)döndürür.

  • SMALLINT

    ile bir DECIMAL(p, 0)p = max(5, -targetScale + 1)döndürür.

  • INTEGER

    ile bir DECIMAL(p, 0)p = max(10, -targetScale + 1))döndürür.

  • BIGINT

    ile bir DECIMAL(p, 0)p = max(20, -targetScale + 1))döndürür.

  • FLOAT

    ve ile değerini DECIMAL(p, s)p = max(14, -targetScale + 1)) döndürür s = min(7, max(0, targetScale))

  • DOUBLE

    ve ile değerini DECIMAL(p, s)p = max(30, -targetScale + 1)) döndürür s = min(15, max(0, targetScale))

  • DECIMAL(p_in, s_in)

    ve ile değerini DECIMAL(p, s)p = max(p_in - s_in + 1, -targetScale + 1)) döndürür s = min(s_in, max(0, targetScale))

Negatifse targetScale , yuvarlama ondalık noktasının solundaki basamaklara -targetScale gerçekleşir.

Varsayılan targetScale değer 0'dır ve sonraki küçük tam sayıya yuvarlanır.

targetScale bir integral giriş türüyle belirtildiğinde, Azure Databricks ARITHMETIC_OVERFLOW sonucu çıkış türü taşıyorsa yükseltir.

Uyarı

Databricks Runtime'da , spark.sql.ansi.enabled ise false, taşma bir hataya neden olmaz, ancak sonucu "sarmalar".

Yaygın hata koşulları

Örnekler

> 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