sql >> Database >  >> RDS >> MariaDB

Hoe TRUNCATE() werkt in MariaDB

In MariaDB, TRUNCATE() is een ingebouwde numerieke functie die een bepaald getal retourneert, afgekapt tot een bepaald aantal decimalen.

Syntaxis

De syntaxis gaat als volgt:

TRUNCATE(X,D)

Waar X is de waarde die moet worden afgekapt, en D specificeert op hoeveel decimalen het moet worden afgekapt.

Voorbeeld

Hier is een voorbeeld:

SELECT TRUNCATE(1.25817, 2);

Resultaat:

+----------------------+
| TRUNCATE(1.25817, 2) |
+----------------------+
|                 1.25 |
+----------------------+

Hier zijn er nog meer:

SELECT 
    TRUNCATE(1.25817, 1),
    TRUNCATE(1.25817, 2),
    TRUNCATE(1.25817, 3),
    TRUNCATE(1.25817, 4);

Resultaat (met verticale uitvoer):

TRUNCATE(1.25817, 1): 1.2
TRUNCATE(1.25817, 2): 1.25
TRUNCATE(1.25817, 3): 1.258
TRUNCATE(1.25817, 4): 1.2581

Negatieve decimalen

Het tweede argument kan indien nodig een negatieve waarde zijn. Als u een negatieve waarde doorgeeft, worden de cijfers links van de decimale plaats om nul te worden.

Voorbeeld:

SELECT TRUNCATE(5824.17, -2);

Resultaat:

+-----------------------+
| TRUNCATE(5824.17, -2) |
+-----------------------+
|                  5800 |
+-----------------------+

Vergeleken met ROUND()

De TRUNCATE() functie is anders dan de ROUND() functie. De ROUND() functie rondt het getal in sommige gevallen naar boven af ​​en in andere naar beneden. De TRUNCATE() functie, aan de andere kant, kapt het getal eenvoudig af zonder af te ronden.

Hier is een vergelijking om dit verschil aan te tonen:

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

Resultaat:

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

Het is ook anders dan de FLOOR() functie, die de grootste gehele waarde retourneert die niet groter is dan het argument. FLOOR() accepteert geen tweede argument zoals ROUND() en TRUNCATE() doen (het retourneert sowieso alleen een geheel getal).

Niet-numerieke argumenten

Dit is wat er gebeurt als we een niet-numeriek argument opgeven:

SELECT TRUNCATE('Ten', 'Two');

Resultaat:

+------------------------+
| TRUNCATE('Ten', 'Two') |
+------------------------+
|                      0 |
+------------------------+
1 row in set, 3 warnings (0.000 sec)

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

+---------+------+------------------------------------------+
| Level   | Code | Message                                  |
+---------+------+------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten'  |
| Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
+---------+------+------------------------------------------+

Ongeldig aantal argumenten

TRUNCATE() . aanroepen met het verkeerde aantal argumenten, of zonder een argument resulteert in een fout:

SELECT TRUNCATE();

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

En:

SELECT TRUNCATE(1, 2, 3);

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1

  1. SqlDependency activeert de OnChange-gebeurtenis niet wanneer de dataset wordt gewijzigd

  2. Functie wordt sneller uitgevoerd zonder STRIKTE modifier?

  3. Hoe PostgreSQL-database profileren?

  4. Snel een Select Query schrijven in SQL Server - SQL Server / TSQL-zelfstudie, deel 108