Di MariaDB, TRUNCATE()
adalah fungsi numerik bawaan yang mengembalikan angka tertentu, dipotong ke sejumlah tempat desimal tertentu.
Sintaks
Sintaksnya seperti ini:
TRUNCATE(X,D)
Dimana X
adalah nilai yang akan dipotong, dan D
menentukan berapa banyak tempat desimal untuk dipotong.
Contoh
Ini contohnya:
SELECT TRUNCATE(1.25817, 2);
Hasil:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Berikut beberapa lainnya:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Hasil (menggunakan keluaran vertikal):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Tempat Desimal Negatif
Argumen kedua bisa menjadi nilai negatif jika diperlukan. Melewati nilai negatif menyebabkan digit ke kiri dari tempat desimal menjadi nol.
Contoh:
SELECT TRUNCATE(5824.17, -2);
Hasil:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
Dibandingkan dengan ROUND()
TRUNCATE()
fungsinya berbeda dengan ROUND()
fungsi. ROUND()
fungsi membulatkan angka ke atas dalam beberapa kasus dan ke bawah pada kasus lainnya. TRUNCATE()
fungsi, di sisi lain, hanya memotong nomor tanpa pembulatan.
Berikut perbandingan untuk menunjukkan perbedaan ini:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Hasil:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Ini juga berbeda dengan FLOOR()
fungsi, yang mengembalikan nilai integer terbesar tidak lebih besar dari argumennya. FLOOR()
tidak menerima argumen kedua seperti ROUND()
dan TRUNCATE()
do (toh hanya mengembalikan bilangan bulat).
Argumen Non-Numerik
Inilah yang terjadi ketika kami memberikan argumen non-numerik:
SELECT TRUNCATE('Ten', 'Two');
Hasil:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Mari kita periksa peringatannya:
SHOW WARNINGS;
Hasil:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Jumlah Argumen Tidak Valid
Memanggil TRUNCATE()
dengan jumlah argumen yang salah, atau tanpa argumen menghasilkan kesalahan:
SELECT TRUNCATE();
Hasil:
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
Dan:
SELECT TRUNCATE(1, 2, 3);
Hasil:
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