W MariaDB TRUNCATE()
to wbudowana funkcja numeryczna, która zwraca podaną liczbę, skróconą do określonej liczby miejsc po przecinku.
Składnia
Składnia wygląda tak:
TRUNCATE(X,D)
Gdzie X
jest wartością do obcięcia, a D
określa do ilu miejsc dziesiętnych należy go skrócić.
Przykład
Oto przykład:
SELECT TRUNCATE(1.25817, 2);
Wynik:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Oto kilka innych:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Wynik (przy użyciu wyjścia pionowego):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Ujemne miejsca dziesiętne
Drugi argument może być wartością ujemną, jeśli jest to wymagane. Przekazanie wartości ujemnej powoduje, że cyfry są w lewo miejsca dziesiętnego na zero.
Przykład:
SELECT TRUNCATE(5824.17, -2);
Wynik:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
W porównaniu z ROUND()
TRUNCATE()
funkcja jest inna niż ROUND()
funkcjonować. ROUND()
funkcja zaokrągla liczbę w górę w niektórych przypadkach, aw innych w dół. TRUNCATE()
z drugiej strony funkcja po prostu obcina liczbę bez zaokrąglania.
Oto porównanie pokazujące tę różnicę:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Wynik:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Różni się również od FLOOR()
funkcja, która zwraca największą liczbę całkowitą nie większą niż jej argument. FLOOR()
nie akceptuje drugiego argumentu, takiego jak ROUND()
i TRUNCATE()
zrób (i tak zawsze zwraca tylko liczbę całkowitą).
Argumenty nieliczbowe
Oto, co się dzieje, gdy dostarczamy argument nieliczbowy:
SELECT TRUNCATE('Ten', 'Two');
Wynik:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Nieprawidłowa liczba argumentów
Wywołanie TRUNCATE()
z niewłaściwą liczbą argumentów lub bez argumentu powoduje błąd:
SELECT TRUNCATE();
Wynik:
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
Oraz:
SELECT TRUNCATE(1, 2, 3);
Wynik:
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