sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer TRUNCATE() i MariaDB

I MariaDB, TRUNCATE() er en indbygget numerisk funktion, der returnerer et givet tal, afkortet til et givet antal decimaler.

Syntaks

Syntaksen ser sådan ud:

TRUNCATE(X,D)

Hvor X er værdien, der skal afkortes, og D angiver, hvor mange decimaler den skal afkortes til.

Eksempel

Her er et eksempel:

SELECT TRUNCATE(1.25817, 2);

Resultat:

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

Her er nogle flere:

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

Resultat (ved hjælp af lodret output):

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

Negative decimaler

Det andet argument kan være en negativ værdi, hvis det kræves. Hvis du sender en negativ værdi, bliver cifre til venstre af decimalen for at blive nul.

Eksempel:

SELECT TRUNCATE(5824.17, -2);

Resultat:

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

Sammenlignet med ROUND()

TRUNCATE() funktionen er forskellig fra ROUND() fungere. ROUND() funktion runder tallet op i nogle tilfælde og ned i andre. TRUNCATE() funktion afkorter på den anden side blot tallet uden afrunding.

Her er en sammenligning for at demonstrere denne forskel:

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

Resultat:

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

Det er også anderledes end FLOOR() funktion, som returnerer den største heltalværdi, der ikke er større end dens argument. FLOOR() accepterer ikke et andet argument som ROUND() og TRUNCATE() do (det returnerer kun et heltal alligevel).

Ikke-numeriske argumenter

Her er, hvad der sker, når vi giver et ikke-numerisk argument:

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

Resultat:

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

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat:

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

Ugyldigt antal argumenter

Kalder TRUNCATE() med det forkerte antal argumenter, eller uden et argument resulterer i en fejl:

SELECT TRUNCATE();

Resultat:

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

Og:

SELECT TRUNCATE(1, 2, 3);

Resultat:

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. Generer DEFAULT-værdier i en CTE UPSERT ved hjælp af PostgreSQL 9.3

  2. Brug af backticks omkring feltnavne

  3. Gendan en SQL Server-database (T-SQL)

  4. Sammenligning af Galera Cluster Cloud-tilbud:Anden del af Google Cloud Platform (GCP)