TRUNCATE()
Funkcja TRUNCATE() może być mylona z funkcją ROUND().
Działanie funkcji polega na tym, że nasza wartość liczbowa jest "ucinana" do odpowiedniej długości po przecinku, jak również "przed" przecinkiem.
W przypadku użycia TRUNCATE() nie występuje zaokrąglenie liczby.
Składnia:
SELECT TRUNCATE(kolumna, ilość_miejsc) FROM tabela;
ilość_miejsc mówi nam jak dokładnie chcemy "uciąć" nasze liczby.
Przykład 1:
Podobnie jak w przypadku funkcji ROUND() posłużymy się pomocniczą tabelą, która pozwoli nam na lepsze zobrazowanie funkcji TRUNCATE().
Towar |
Cena |
Serwer MySQL |
1546.43 |
Serwer Oracle |
1214.98 |
Na powyższej tabeli wykonujemy zapytanie:
SELECT Towar, TRUNCATE(Cena, 0) FROM Towar;
Towar |
TRUNCATE(Cena, 0) |
Serwer MySQL |
1546 |
Serwer Oracle |
1214 |
Nasza cena została "ucięta" do 0 miejsc po przecinku.
Trzeba zwrócić uwagę, że w przypadku użycia funkcji TRUNCATE(Cena, 0) wartość w drugim wierszu to 1214. Użycie funkcji ROUND(Cena, 0) miałaby wartość 1215.
Związane jest to z tym, iż liczba 1214.98 zostałaby zaokrąglona w górę, czyli 1215.
Przykład 2:
SELECT Towar, TRUNCATE(Cena, 1) FROM Towar;
Towar |
TRUNCATE(Cena, 1) |
Serwer MySQL |
1546.4 |
Serwer Oracle |
1214.9 |
W tym przykładzie również w drugim wierszu występuje różnica, co do użycia funkcji ROUND() z takimi samymi parametrami.
Przykład 3:
SELECT Towar, TRUNCATE(Cena, -3) FROM Towar;
Towar |
TRUNCATE(Cena, -3) |
Serwer MySQL |
1000 |
Serwer Oracle |
1000 |