In MariaDB, TRUNCATE()
is een ingebouwde numerieke functie die een bepaald getal retourneert, afgekapt tot een bepaald aantal decimalen.
Syntaxis
De syntaxis gaat als volgt:
TRUNCATE(X,D)
Waar X
is de waarde die moet worden afgekapt, en D
specificeert op hoeveel decimalen het moet worden afgekapt.
Voorbeeld
Hier is een voorbeeld:
SELECT TRUNCATE(1.25817, 2);
Resultaat:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Hier zijn er nog meer:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Resultaat (met verticale uitvoer):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Negatieve decimalen
Het tweede argument kan indien nodig een negatieve waarde zijn. Als u een negatieve waarde doorgeeft, worden de cijfers links van de decimale plaats om nul te worden.
Voorbeeld:
SELECT TRUNCATE(5824.17, -2);
Resultaat:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
Vergeleken met ROUND()
De TRUNCATE()
functie is anders dan de ROUND()
functie. De ROUND()
functie rondt het getal in sommige gevallen naar boven af en in andere naar beneden. De TRUNCATE()
functie, aan de andere kant, kapt het getal eenvoudig af zonder af te ronden.
Hier is een vergelijking om dit verschil aan te tonen:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Resultaat:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Het is ook anders dan de FLOOR()
functie, die de grootste gehele waarde retourneert die niet groter is dan het argument. FLOOR()
accepteert geen tweede argument zoals ROUND()
en TRUNCATE()
doen (het retourneert sowieso alleen een geheel getal).
Niet-numerieke argumenten
Dit is wat er gebeurt als we een niet-numeriek argument opgeven:
SELECT TRUNCATE('Ten', 'Two');
Resultaat:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Laten we de waarschuwing eens bekijken:
SHOW WARNINGS;
Resultaat:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Ongeldig aantal argumenten
TRUNCATE()
. aanroepen met het verkeerde aantal argumenten, of zonder een argument resulteert in een fout:
SELECT TRUNCATE();
Resultaat:
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
En:
SELECT TRUNCATE(1, 2, 3);
Resultaat:
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