MariaDB има FLOOR()
функция и TRUNCATE()
функция, която може да връща едни и същи резултати или различни резултати, в зависимост от точната стойност на техните аргументи.
По-долу е даден кратък преглед на разликата между FLOOR()
и TRUNCATE()
в MariaDB.
Разликата
Ето разликата между всяка функция накратко:
FLOOR()
връща най-голямата целочислена стойност, не по-голяма от неговия аргумент.TRUNCATE()
съкращава аргумента си до определен брой десетични знака.
Синтаксис
Първо, ето синтаксиса на всяка функция.
FLOOR()
Синтаксисът за FLOOR()
става така:
FLOOR(X)
Връща най-голямата целочислена стойност, не по-голяма от X
.
TRUNCATE()
Синтаксисът за TRUNCATE()
става така:
TRUNCATE(X,D)
TRUNCATE()
връща числото X
, съкратено до D
десетични знаци.
Пример
Ето сравнение, за да демонстрирате разликата между FLOOR()
и TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Резултат:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
В този случай числото е отрицателна стойност и резултатът от всяка функция е различен.
FLOOR()
върна най-голямото цяло число (-4
) стойност не по-голяма от неговия аргумент.TRUNCATE()
функция от друга страна, просто отрязва числото на посочения десетичен знак.
Същият резултат
И двете функции понякога могат да върнат един и същ резултат. Всичко зависи от стойността на предаваните аргументи.
Ако променим числата на положителни стойности, и двете функции връщат един и същ резултат:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Резултат:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Вторият аргумент
Друга очевидна разлика между двете функции е, че TRUNCATE()
приема/изисква втори аргумент. Това може да доведе до резултат, който съдържа дробна част.
FLOOR()
обаче връща само цяло число, така че никога не се връща дробна част.
Пример
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Резултат:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
ROUND()
Функция
И двете функции са различни от ROUND()
функция, която закръгля аргумента си до определен брой десетични знака.