REMAINDER()
REMAINDER(wartosc_dzielona,dzielnik)
Zwraca resztę z dzielenie "wartosc_dzielona" przez "dzielnik".
Różnica przy użyciu REMAINDER, zamiast funkcji MOD jest taka, iż REMAINDER korzysta z ROUND(), zaś MOD() z FLOOR() przy ustalaniu wyniku.
(W celu prześledzenia działania funkcji MOD(), ROUND(), FLOOR() zapraszam do przeczytania artykułów opisujących funkcje)
Najlepszym przykładem różnicy działania funkcji będzie opisanie krok po kroku.
SELECT 2/3 FROM dual;
2/3
----------------------
0,6666666666666666666666666666666666666667
Dzielenie liczby 2 przez liczbę 3 daje wynik 0.666
Dla FLOOR(0.666) wynikiem będzie 0.
Dla ROUND(0.666) wynikiem będzie 1.
Jako, że funkcja MOD() korzysta z FLOOR (wynik 0), będziemy mieli 0 i 2 reszty.
Funkcja REMAINDER() korzsyta z ROUND (wynik 1), będziemy mieli 1 i -1 reszty.
1x3 = 3
3+(-1) = 2
SELECT REMAINDER(2,3) FROM dual;
REMAINDER(2,3)
----------------------
-1
SELECT MOD(2,3) FROM dual;
MOD(2,3)
----------------------
2
Brak komentarzy:
Prześlij komentarz