MariaDB má FLOOR()
funkce a TRUNCATE()
funkce, která může vracet stejné nebo různé výsledky v závislosti na přesné hodnotě jejich argumentů.
Níže je stručný přehled rozdílů mezi FLOOR()
a TRUNCATE()
v MariaDB.
Rozdíl
Zde je v kostce rozdíl mezi jednotlivými funkcemi:
FLOOR()
vrátí největší celočíselnou hodnotu, která není větší než jeho argument.TRUNCATE()
zkrátí svůj argument na zadaný počet desetinných míst.
Syntaxe
Za prvé, zde jsou syntaxe každé funkce.
FLOOR()
Syntaxe pro FLOOR()
vypadá takto:
FLOOR(X)
Vrací největší celočíselnou hodnotu ne větší než X
.
TRUNCATE()
Syntaxe pro TRUNCATE()
vypadá takto:
TRUNCATE(X,D)
TRUNCATE()
vrátí číslo X
, zkráceno na D
desetinná místa.
Příklad
Zde je srovnání, které demonstruje rozdíl mezi FLOOR()
a TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Výsledek:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
V tomto případě je číslo záporná hodnota a výsledek každé funkce je jiný.
FLOOR()
vrátilo největší celé číslo (-4
) hodnota není větší než jeho argument.TRUNCATE()
funkce na druhé straně jednoduše zkrátila číslo na zadaném desetinném místě.
Stejný výsledek
Obě funkce mohou někdy vrátit stejný výsledek. Vše závisí na hodnotě předávaných argumentů.
Pokud změníme čísla na kladné hodnoty, obě funkce vrátí stejný výsledek:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Výsledek:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Druhý argument
Dalším zřejmým rozdílem mezi těmito dvěma funkcemi je to, že TRUNCATE()
přijímá/vyžaduje druhý argument. Výsledkem může být výsledek, který obsahuje zlomkovou část.
FLOOR()
nicméně vrací pouze celé číslo, takže není nikdy vrácena žádná zlomková část.
Příklad
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Výsledek:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
ROUND()
Funkce
Obě funkce se liší od ROUND()
funkce, která zaokrouhlí svůj argument na zadaný počet desetinných míst.