MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB ROUND() срещу TRUNCATE()

MariaDB има ROUND() функция и TRUNCATE() функция, която може да връща едни и същи резултати или различни резултати, в зависимост от точната стойност на техните аргументи.

Както подсказват имената на функциите, ROUND() кръгли номера и TRUNCATE() съкращава броя. Отрязването на число просто го отрязва, без да се извършва закръгляване.

По-долу е даден кратък преглед на разликата между ROUND() и TRUNCATE() в MariaDB.

Разликата

Ето разликата между всяка функция накратко:

  • ROUND() кръгли неговия аргумент до определен брой десетични знаци. Това понякога води до закръгляне на резултата, а понякога не.
  • TRUNCATE() просто съкращава неговия аргумент до определен брой десетични знаци. Не се получава закръгляване.

Синтаксис и дефиниции

Първо, ето синтаксиса и дефинициите на всяка функция.

ROUND()

ROUND() функцията може да се използва по следните два начина:

ROUND(X)
ROUND(X,D)

ROUND() закръгля аргумента X до D десетичните знаци. Алгоритъмът за закръгляване зависи от типа данни на X .

TRUNCATE()

TRUNCATE() функцията може да се използва само с един синтаксис:

TRUNCATE(X,D)

TRUNCATE() връща числото X , съкратено до D десетични знаци.

Пример

Ето сравнение, за да демонстрирате разликата между ROUND() и TRUNCATE() :

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

Резултат:

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

В този случай ROUND() функцията закръгли числото нагоре, тъй като следващата цифра (8 ) е по-голямо от 5 .

TRUNCATE() функция от друга страна, просто отрязва числото на посочения десетичен знак. TRUNCATE() не прави закръгляване. Просто прекъсва номера на определеното място.

И двете функции приемат отрицателна стойност за десетичната запетая и се прилага същата съответна логика:

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

Резултат:

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

Същият резултат

И двете функции понякога могат да върнат един и същ резултат. Всичко зависи от стойността на предаваните аргументи.

Ето пример, в който и двете връщат един и същ резултат:

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

Резултат:

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

В този случай ROUND() не закръгли числото нагоре, защото следващата цифра (4 ) беше по-малко от 5 . Следователно и двата резултата са еднакви.

FLOOR() Функция

И двете функции са различни от FLOOR() функция, която връща най-голямата целочислена стойност, не по-голяма от нейния аргумент. FLOOR() не приема втори аргумент като ROUND() и TRUNCATE() do (това така или иначе връща само цяло число).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част втора

  2. Как да се свържете с AWS MySQL / MariaDB RDS или EC2 база данни от MySQL WorkBench

  3. Преобразувайте резултатите от заявката в списък, разделен със запетая, в MariaDB

  4. Избор на прокси за база данни за MySQL &MariaDB

  5. Как работи CONVERT() в MariaDB