sql >> Databáze >  >> RDS >> MariaDB

MariaDB ROUND() vs. TRUNCATE()

MariaDB má ROUND() funkce a TRUNCATE() funkce, která může vracet stejné nebo různé výsledky v závislosti na přesné hodnotě jejich argumentů.

Jak názvy funkcí napovídají, ROUND() koly číslo a TRUNCATE() zkrátí číslo. Zkrácení čísla jednoduše ořízne číslo bez provedení jakéhokoli zaokrouhlení.

Níže je stručný přehled rozdílů mezi ROUND() a TRUNCATE() v MariaDB.

Rozdíl

Zde je v kostce rozdíl mezi jednotlivými funkcemi:

  • ROUND() koly jeho argument na zadaný počet desetinných míst. To někdy způsobí, že výsledek bude zaokrouhlen nahoru a někdy ne.
  • TRUNCATE() jednoduše zkrátí jeho argument na zadaný počet desetinných míst. Nedochází k zaokrouhlování.

Syntaxe a definice

Za prvé, zde jsou syntaxe a definice jednotlivých funkcí.

ROUND()

ROUND() funkci lze použít následujícími dvěma způsoby:

ROUND(X)
ROUND(X,D)

ROUND() zaokrouhlí argument X na D desetinná místa. Algoritmus zaokrouhlování závisí na datovém typu X .

TRUNCATE()

TRUNCATE() funkci lze použít pouze s jednou syntaxí:

TRUNCATE(X,D)

TRUNCATE() vrátí číslo X , zkráceno na D desetinná místa.

Příklad

Zde je srovnání, které ukazuje rozdíl mezi ROUND() a TRUNCATE() :

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

Výsledek:

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

V tomto případě ROUND() funkce zaokrouhlí číslo nahoru, protože další číslice (8 ) je větší než 5 .

TRUNCATE() funkce na druhé straně jednoduše zkrátila číslo na zadaném desetinném místě. TRUNCATE() neprovádí žádné zaokrouhlování. Jednoduše odřízne číslo na určeném místě.

Obě funkce akceptují zápornou hodnotu pro desetinné místo a platí stejná příslušná logika:

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

Výsledek:

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

Stejný výsledek

Obě funkce mohou někdy vrátit stejný výsledek. Vše závisí na hodnotě předávaných argumentů.

Zde je příklad, kdy oba vrátí stejný výsledek:

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

Výsledek:

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

V tomto případě ROUND() nezaokrouhlili číslo nahoru, protože další číslice (4 ) byl menší než 5 . Proto jsou oba výsledky stejné.

FLOOR() Funkce

Obě funkce se liší od FLOOR() funkce, která vrací největší celočíselnou hodnotu, která není větší než její argument. FLOOR() nepřijímá druhý argument jako ROUND() a TRUNCATE() do (stejně vždy vrací pouze celé číslo).


  1. Klíčové slovo FROM nebylo nalezeno tam, kde se očekávalo (Oracle SQL)

  2. Základní SQL dotazy

  3. OPENXML s xmlns:dt

  4. Jak opravit poškozenou databázi Access