Jak zaokrąglić w dół do najbliższej liczby całkowitej w MySQL?
Przykład: 12345.7344 rounds to 12345
round()
Funkcja mysql zaokrągla w górę.
Nie wiem, jak długie będą wartości ani miejsca po przecinku, może to być 10 cyfr z 4 miejscami po przecinku, może to być 2 cyfry z 7 miejscami po przecinku.
Odpowiedzi:
Użyj FLOOR :
SELECT FLOOR(your_field) FROM your_table
źródło
FLOOR()
była różnica między 2 podzapytaniami (różnica w podzapytaniach wynosiła -70,00) ... czy kiedykolwiek widziałeś to wcześniej?Użyj funkcji FLOOR () , jeśli chcesz zaokrąglić liczbę dziesiętną do niższej liczby całkowitej. Przykłady:
Użyj ROUND () , jeśli chcesz zaokrąglić liczbę dziesiętną do najbliższej liczby całkowitej. Przykłady:
Użyj CEIL () , jeśli chcesz zaokrąglić liczbę dziesiętną do górnej liczby całkowitej. Przykłady:
źródło
SELECT FLOOR(12345.7344);
Przeczytaj więcej tutaj .
źródło
SUBSTR
będzie lepszy niżFLOOR
w niektórych przypadkach, ponieważ FLOOR ma następujący „błąd”:SELECT 25 * 9.54 + 0.5 -> 239.00 SELECT FLOOR(25 * 9.54 + 0.5) -> 238 (oops!) SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239
źródło
Można to zrobić na dwa sposoby:
select floor(desired_field_value) from table
select round(desired_field_value-0.5) from table
Wyjaśnienie drugiego sposobu: Załóżmy, że liczba całkowita 12345,7344. Zatem 12345,7344 - 0,5 = 12345,2344, a zaokrąglenie wyniku wyniesie 12345.
źródło
Spróbuj tego,
SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)
lub
SELECT FLOOR(12345.7344)
SQLFiddle Demo
źródło
jeśli potrzebujesz ułamków dziesiętnych, możesz to wykorzystać
DECLARE @Num NUMERIC(18, 7) = 19.1471985 SELECT FLOOR(@Num * 10000) / 10000
Wyjście: 19.147100 Wyczyść: 985 Dodać: 00
LUB użyj tego:
SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)
Wyjście: 19.1471 Clear: 985
źródło