В MariaDB, FLOOR() е вградена числова функция, която връща най-голямата стойност, не по-голяма от нейния аргумент.
Синтаксис
Синтаксисът е така:
FLOOR(X)
Където X е стойността, към която да се приложи операцията.
Пример
Ето един пример:
SELECT FLOOR(3.6789); Резултат:
+---------------+ | FLOOR(3.6789) | +---------------+ | 3 | +---------------+
Предаването на отрицателна стойност води до следния резултат:
SELECT FLOOR(-3.6789); Резултат:
+----------------+ | FLOOR(-3.6789) | +----------------+ | -4 | +----------------+
В сравнение с ROUND()
FLOOR() функцията е различна от ROUND() функция. ROUND() функцията ще закръгли числото нагоре в някои случаи и надолу в други. FLOOR() функцията, от друга страна, винаги връща най-голямата целочислена стойност, не по-голяма от нейния аргумент.
SELECT
FLOOR(3.6789),
ROUND(3.6789); Резултат:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Също така, ROUND() ни позволява да посочим броя на десетичните знаци, които да закръгляме до:
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2); Резултат:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
FLOOR() също е различен от TRUNCATE() функция, която просто съкращава числото до даден десетичен знак.
Нечислови аргументи
Ето какво се случва, когато предоставим нечислов аргумент:
SELECT FLOOR('Ten'); Резултат:
+--------------+
| FLOOR('Ten') |
+--------------+
| 0 |
+--------------+
1 row in set, 1 warning (0.000 sec) Нека проверим предупреждението:
SHOW WARNINGS; Резултат:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Липсващи аргументи
Извикване на FLOOR() без аргумент води до грешка:
SELECT FLOOR(); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FLOOR'