sql >> Databáze >  >> RDS >> MariaDB

Jak TRUNCATE() funguje v MariaDB

V MariaDB TRUNCATE() je vestavěná numerická funkce, která vrací dané číslo zkrácené na daný počet desetinných míst.

Syntaxe

Syntaxe vypadá takto:

TRUNCATE(X,D)

Kde X je hodnota ke zkrácení a D určuje, na kolik desetinných míst se má zkrátit.

Příklad

Zde je příklad:

SELECT TRUNCATE(1.25817, 2);

Výsledek:

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

Zde jsou některé další:

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

Výsledek (při použití vertikálního výstupu):

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

Záporná desetinná místa

Druhý argument může být v případě potřeby záporná hodnota. Předání záporné hodnoty způsobí, že číslice budou vlevo desetinného místa na nulu.

Příklad:

SELECT TRUNCATE(5824.17, -2);

Výsledek:

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

Ve srovnání s ROUND()

TRUNCATE() funkce se liší od funkce ROUND() funkce. ROUND() funkce v některých případech zaokrouhlí číslo nahoru a v jiných dolů. TRUNCATE() funkce na druhé straně jednoduše zkrátí číslo bez zaokrouhlení.

Zde je srovnání, které tento rozdíl demonstruje:

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

Výsledek:

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

Liší se také od FLOOR() funkce, která vrací největší celočíselnou hodnotu, která není větší než její argument. FLOOR() nepřijímá druhý argument jako ROUND() a TRUNCATE() do (stejně vždy vrací pouze celé číslo).

Nečíselné argumenty

Když poskytneme nečíselný argument, stane se toto:

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

Výsledek:

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

Podívejme se na varování:

SHOW WARNINGS;

Výsledek:

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

Neplatný počet argumentů

Volání TRUNCATE() s nesprávným počtem argumentů nebo bez argumentu vede k chybě:

SELECT TRUNCATE();

Výsledek:

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

A:

SELECT TRUNCATE(1, 2, 3);

Výsledek:

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. Jak vygenerovat balíček API tabulky v Oracle SQL Developer?

  2. Použití aliasového sloupce v klauzuli where v Postgresql

  3. Rozdíl mezi klíčem, primárním klíčem, jedinečným klíčem a indexem v MySQL

  4. Vraťte krátký název měsíce z data v Oracle