sql >> Database >  >> RDS >> MariaDB

MariaDB FLOOR() versus TRUNCATE()

MariaDB heeft een FLOOR() functie en een TRUNCATE() functie die dezelfde resultaten of verschillende resultaten kan retourneren, afhankelijk van de exacte waarde van hun argumenten.

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

Het verschil

Hier is het verschil tussen elke functie in een notendop:

  • FLOOR() geeft de grootste gehele waarde terug die niet groter is dan zijn argument.
  • TRUNCATE() kapt zijn argument af tot een bepaald aantal decimalen.

Syntaxis

Ten eerste zijn hier de syntaxis van elke functie.

FLOOR()

De syntaxis voor FLOOR() gaat als volgt:

FLOOR(X)

Het geeft de grootste gehele waarde terug die niet groter is dan X .

TRUNCATE()

De syntaxis voor TRUNCATE() gaat als volgt:

TRUNCATE(X,D)

TRUNCATE() geeft het getal X . terug , afgekapt tot D decimalen.

Voorbeeld

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

SELECT 
    FLOOR(-3.6789),
    TRUNCATE(-3.6789, 0);

Resultaat:

+----------------+----------------------+
| FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) |
+----------------+----------------------+
|             -4 |                   -3 |
+----------------+----------------------+

In dit geval is het getal een negatieve waarde en is het resultaat van elke functie anders.

  • FLOOR() gaf het grootste gehele getal terug (-4 ) waarde niet groter is dan het argument.
  • De TRUNCATE() functie aan de andere kant, het getal op de opgegeven decimale plaats gewoon afgekapt.

Hetzelfde resultaat

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

Als we de getallen veranderen in positieve waarden, geven beide functies hetzelfde resultaat:

SELECT 
    FLOOR(3.6789),
    TRUNCATE(3.6789, 0);

Resultaat:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 0) |
+---------------+---------------------+
|             3 |                   3 |
+---------------+---------------------+

Het tweede argument

Een ander duidelijk verschil tussen de twee functies is dat TRUNCATE() accepteert/vereist een tweede argument. Dit kan resulteren in een resultaat dat een fractioneel deel bevat.

FLOOR() retourneert echter alleen een geheel getal, dus er wordt nooit een fractioneel deel geretourneerd.

Voorbeeld

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

Resultaat:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 2) |
+---------------+---------------------+
|             3 |                3.67 |
+---------------+---------------------+

De ROUND() Functie

Beide functies zijn anders dan de ROUND() functie, die zijn argument afrondt op een bepaald aantal decimalen.


  1. Automatisch verhogen in orakel naar reeds gemaakte tabel

  2. Is er een manier om Java op Oracle 11g XE te installeren?

  3. Aan de slag met Postgres 13 op Ubuntu 20.04

  4. Hoe u fouten bij het muteren van tabellen kunt voorkomen