V MariaDB TRUNCATE()
je vestavěná numerická funkce, která vrací dané číslo zkrácené na daný počet desetinných míst.
Syntaxe
Syntaxe vypadá takto:
TRUNCATE(X,D)
Kde X
je hodnota ke zkrácení a D
určuje, na kolik desetinných míst se má zkrátit.
Příklad
Zde je příklad:
SELECT TRUNCATE(1.25817, 2);
Výsledek:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Zde jsou některé další:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Výsledek (při použití vertikálního výstupu):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Záporná desetinná místa
Druhý argument může být v případě potřeby záporná hodnota. Předání záporné hodnoty způsobí, že číslice budou vlevo desetinného místa na nulu.
Příklad:
SELECT TRUNCATE(5824.17, -2);
Výsledek:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
Ve srovnání s ROUND()
TRUNCATE()
funkce se liší od funkce ROUND()
funkce. ROUND()
funkce v některých případech zaokrouhlí číslo nahoru a v jiných dolů. TRUNCATE()
funkce na druhé straně jednoduše zkrátí číslo bez zaokrouhlení.
Zde je srovnání, které tento rozdíl demonstruje:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Výsledek:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Liší se také od FLOOR()
funkce, která vrací největší celočíselnou hodnotu, která není větší než její argument. FLOOR()
nepřijímá druhý argument jako ROUND()
a TRUNCATE()
do (stejně vždy vrací pouze celé číslo).
Nečíselné argumenty
Když poskytneme nečíselný argument, stane se toto:
SELECT TRUNCATE('Ten', 'Two');
Výsledek:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Neplatný počet argumentů
Volání TRUNCATE()
s nesprávným počtem argumentů nebo bez argumentu vede k chybě:
SELECT TRUNCATE();
Výsledek:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
A:
SELECT TRUNCATE(1, 2, 3);
Výsledek:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1