MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa TRUNCATE() w MariaDB

W MariaDB TRUNCATE() to wbudowana funkcja numeryczna, która zwraca podaną liczbę, skróconą do określonej liczby miejsc po przecinku.

Składnia

Składnia wygląda tak:

TRUNCATE(X,D)

Gdzie X jest wartością do obcięcia, a D określa do ilu miejsc dziesiętnych należy go skrócić.

Przykład

Oto przykład:

SELECT TRUNCATE(1.25817, 2);

Wynik:

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

Oto kilka innych:

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

Wynik (przy użyciu wyjścia pionowego):

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

Ujemne miejsca dziesiętne

Drugi argument może być wartością ujemną, jeśli jest to wymagane. Przekazanie wartości ujemnej powoduje, że cyfry są w lewo miejsca dziesiętnego na zero.

Przykład:

SELECT TRUNCATE(5824.17, -2);

Wynik:

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

W porównaniu z ROUND()

TRUNCATE() funkcja jest inna niż ROUND() funkcjonować. ROUND() funkcja zaokrągla liczbę w górę w niektórych przypadkach, aw innych w dół. TRUNCATE() z drugiej strony funkcja po prostu obcina liczbę bez zaokrąglania.

Oto porównanie pokazujące tę różnicę:

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

Wynik:

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

Różni się również od FLOOR() funkcja, która zwraca największą liczbę całkowitą nie większą niż jej argument. FLOOR() nie akceptuje drugiego argumentu, takiego jak ROUND() i TRUNCATE() zrób (i tak zawsze zwraca tylko liczbę całkowitą).

Argumenty nieliczbowe

Oto, co się dzieje, gdy dostarczamy argument nieliczbowy:

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

Wynik:

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

Sprawdźmy ostrzeżenie:

SHOW WARNINGS;

Wynik:

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

Nieprawidłowa liczba argumentów

Wywołanie TRUNCATE() z niewłaściwą liczbą argumentów lub bez argumentu powoduje błąd:

SELECT TRUNCATE();

Wynik:

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

Oraz:

SELECT TRUNCATE(1, 2, 3);

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB zbliża się do Twojego miasta!

  2. ClusterControl — Zaawansowane zarządzanie kopiami zapasowymi — mariabackup Część II

  3. Jak działa funkcja ROUND() w MariaDB

  4. Najlepsze narzędzia Open Source do migracji MySQL i MariaDB

  5. Zwiększanie wydajności poprzez dzielenie ruchu w bazie danych w trybie odczytu i zapisu za pomocą Moodle 3.9