MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB ROUND() a OBCIĄŻENIE()

MariaDB ma funkcję ROUND() funkcja i TRUNCATE() funkcja, która może zwrócić te same wyniki lub różne wyniki, w zależności od dokładnej wartości ich argumentów.

Jak sugerują nazwy funkcji, ROUND() rundy numer i TRUNCATE() obcina numer. Obcięcie liczby po prostu odcina ją bez wykonywania zaokrąglania.

Poniżej znajduje się krótkie podsumowanie różnicy między ROUND() i TRUNCATE() w MariaDB.

Różnica

Oto różnica między każdą funkcją w skrócie:

  • ROUND() rundy jego argument do określonej liczby miejsc dziesiętnych. Czasami spowoduje to zaokrąglenie wyniku w górę, a czasami nie.
  • TRUNCATE() po prostu obcina jego argument do określonej liczby miejsc dziesiętnych. Nie występuje zaokrąglanie.

Składnia i definicje

Po pierwsze, oto składnia i definicje każdej funkcji.

ROUND()

ROUND() funkcja może być używana na dwa sposoby:

ROUND(X)
ROUND(X,D)

ROUND() zaokrągla argument X do D miejsca dziesiętne. Algorytm zaokrąglania zależy od typu danych X .

TRUNCATE()

TRUNCATE() funkcja może być używana tylko z jedną składnią:

TRUNCATE(X,D)

TRUNCATE() zwraca liczbę X , obcięte do D miejsca po przecinku.

Przykład

Oto porównanie pokazujące różnicę między ROUND() i TRUNCATE() :

SELECT 
    TRUNCATE(3.6789, 2),
    ROUND(3.6789, 2);

Wynik:

+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

W tym przypadku ROUND() funkcja zaokrągliła liczbę w górę, ponieważ następna cyfra (8 ) jest większe niż 5 .

TRUNCATE() z drugiej strony, po prostu skrócił liczbę w określonym miejscu dziesiętnym. TRUNCATE() nie wykonuje żadnych zaokrągleń. Po prostu odcina liczbę we wskazanym miejscu.

Obie funkcje przyjmują ujemną wartość miejsca dziesiętnego i obowiązuje ta sama logika:

SELECT 
    TRUNCATE(36789, -2),
    ROUND(36789, -2);

Wynik:

+---------------------+------------------+
| TRUNCATE(36789, -2) | ROUND(36789, -2) |
+---------------------+------------------+
|               36700 |            36800 |
+---------------------+------------------+

Ten sam wynik

Obie funkcje mogą czasami zwrócić ten sam wynik. Wszystko zależy od wartości przekazywanych argumentów.

Oto przykład, w którym obie zwracają ten sam wynik:

SELECT 
    TRUNCATE(3.6749, 2),
    ROUND(3.6749, 2);

Wynik:

+---------------------+------------------+
| TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) |
+---------------------+------------------+
|                3.67 |             3.67 |
+---------------------+------------------+

W tym przypadku ROUND() nie zaokrągliła liczby w górę, ponieważ następna cyfra (4 ) był mniejszy niż 5 . Dlatego oba wyniki są takie same.

FLOOR() Funkcja

Obie funkcje różnią się 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ą).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja ROUND() w MariaDB

  2. Skuteczne monitorowanie replikacji MySQL za pomocą pulpitów nawigacyjnych SCUMM:część 2

  3. Dziękujemy Amazon za zainspirowanie nas do dostarczania lepszego DBaaS:SkySQL

  4. Różnica między INSTR() a LOCATE() w MariaDB

  5. MariaDB JSON_QUERY() Objaśnienie