sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB FLOOR() vs TRUNCATE()

MariaDB har en FLOOR() funktion och en TRUNCATE() funktion som kan returnera samma resultat eller olika resultat, beroende på det exakta värdet av deras argument.

Nedan är en snabb sammanfattning av skillnaden mellan FLOOR() och TRUNCATE() i MariaDB.

Skillnaden

Här är skillnaden mellan varje funktion i ett nötskal:

  • FLOOR() returnerar det största heltalsvärdet som inte är större än dess argument.
  • TRUNCATE() trunkerar sitt argument till ett specificerat antal decimaler.

Syntax

Först, här är syntaxerna för varje funktion.

FLOOR()

Syntaxen för FLOOR() går så här:

FLOOR(X)

Den returnerar det största heltalsvärdet som inte är större än X .

TRUNCATE()

Syntaxen för TRUNCATE() går så här:

TRUNCATE(X,D)

TRUNCATE() returnerar talet X , trunkerad till D decimaler.

Exempel

Här är en jämförelse för att visa skillnaden mellan FLOOR() och TRUNCATE() :

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

Resultat:

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

I det här fallet är talet ett negativt värde och resultatet från varje funktion är olika.

  • FLOOR() returnerade det största heltal (-4 ) värde inte större än dess argument.
  • TRUNCATE() funktion å andra sidan, trunkerade helt enkelt talet med den angivna decimalen.

Samma resultat

Båda funktionerna kan ibland returnera samma resultat. Allt beror på värdet av argumenten som skickas.

Om vi ​​ändrar siffrorna till positiva värden returnerar båda funktionerna samma resultat:

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

Resultat:

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

Det andra argumentet

En annan uppenbar skillnad mellan de två funktionerna är att TRUNCATE() accepterar/kräver ett andra argument. Detta kan resultera i ett resultat som innehåller en bråkdel.

FLOOR() returnerar dock bara ett heltal, så ingen bråkdel returneras någonsin.

Exempel

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

Resultat:

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

ROUND() Funktion

Båda funktionerna skiljer sig från ROUND() funktion, som avrundar sitt argument till ett visst antal decimaler.


  1. Databaskorrpution i MS Access och hur man handskas

  2. Hur Round() fungerar i PostgreSQL

  3. Skapa tabell med datumstämpeln

  4. Hur man kopierar en enorm tabelldata till en annan tabell i SQL Server