sql >> Database >  >> RDS >> MariaDB

MariaDB RONDE() vs VLOER()

MariaDB heeft een ROUND() functie en een FLOOR() functies die in sommige opzichten vergelijkbaar zijn, maar op andere manieren behoorlijk verschillen.

Hieronder volgt een kort overzicht van het verschil tussen ROUND() en FLOOR() in MariaDB.

Het verschil

Hier is het verschil tussen elke functie in een notendop:

  • ROUND() rondt zijn argument af op een gespecificeerd aantal decimalen.
  • FLOOR() geeft de grootste gehele waarde terug die niet groter is dan zijn argument.

Syntaxis

Hier zijn de syntaxis en definities van elke functie.

ROUND()

De ROUND() functie kan op de volgende twee manieren worden gebruikt:

ROUND(X)
ROUND(X,D)

ROUND() rondt het argument X af naar D decimalen. Het afrondingsalgoritme is afhankelijk van het gegevenstype van X .

FLOOR()

De FLOOR() functie kan met slechts één syntaxis worden gebruikt:

FLOOR(X)

FLOOR() geeft de grootste gehele waarde terug die niet groter is dan X .

Voorbeeld van het verschil

Hier is een vergelijking om het verschil aan te tonen tussen ROUND() en FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Resultaat:

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

In dit geval is de ROUND() functie rondt het getal naar boven af, omdat het volgende cijfer (8 ) is groter dan 5 .

De FLOOR() functie aan de andere kant, retourneerde eenvoudigweg de grootste gehele waarde die niet groter is dan het argument (3.6789 ).

Tweede argument

Een ander verschil is dat ROUND() accepteert een optioneel tweede argument, terwijl FLOOR() niet.

Met het tweede argument kunt u specificeren op hoeveel decimalen het getal moet worden afgerond.

Voorbeeld

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

Resultaat:

+---------------+------------------+
| FLOOR(3.6789) | ROUND(3.6789, 2) |
+---------------+------------------+
|             3 |             3.68 |
+---------------+------------------+

Voorbeeld van hetzelfde resultaat

Deze functies kunnen soms hetzelfde resultaat opleveren. Het hangt allemaal af van de waarde van de argumenten die worden doorgegeven.

Als we bijvoorbeeld een minteken voor de waarden plaatsen, krijgen we hetzelfde resultaat:

SELECT 
    FLOOR(-3.6789),
    ROUND(-3.6789);

Resultaat:

+----------------+----------------+
| FLOOR(-3.6789) | ROUND(-3.6789) |
+----------------+----------------+
|             -4 |             -4 |
+----------------+----------------+

Dat wil niet zeggen dat een negatieve waarde altijd hetzelfde resultaat oplevert - dat doet het niet. Het hangt allemaal af van de werkelijke waarden die worden verstrekt en de afronding die moet plaatsvinden door ROUND() .

Hier is een voorbeeld waarbij negatieve waarden verschillende resultaten opleveren:

SELECT 
    FLOOR(-3.3739),
    ROUND(-3.3739);

Resultaat:

+----------------+----------------+
| FLOOR(-3.3739) | ROUND(-3.3739) |
+----------------+----------------+
|             -4 |             -3 |
+----------------+----------------+

En hier is een voorbeeld waarbij positieve waarden hetzelfde resultaat opleveren:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Resultaat:

+---------------+---------------+
| FLOOR(3.3739) | ROUND(3.3739) |
+---------------+---------------+
|             3 |             3 |
+---------------+---------------+

De TRUNCATE() Functie

Beide functies zijn anders dan de TRUNCATE() functie, die de waarde eenvoudig afkapt tot een bepaald aantal decimalen.


  1. SQL-selecteer elementen waarbij de som van het veld kleiner is dan N

  2. xampp MySQL start niet op

  3. SQL Server:voeg onjuiste versie 661 toe

  4. Databaseschema, automatisch verhogen