Trong MariaDB, TRUNCATE()
là một hàm số được tích hợp sẵn trả về một số nhất định, được cắt ngắn đến một số vị trí thập phân nhất định.
Cú pháp
Cú pháp như sau:
TRUNCATE(X,D)
Ở đâu X
là giá trị để cắt bớt và D
chỉ định có bao nhiêu vị trí thập phân để cắt bớt nó.
Ví dụ
Đây là một ví dụ:
SELECT TRUNCATE(1.25817, 2);
Kết quả:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Đây là một số khác:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Kết quả (sử dụng đầu ra dọc):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Vị trí thập phân phủ định
Đối số thứ hai có thể là giá trị âm nếu được yêu cầu. Việc chuyển một giá trị âm làm cho các chữ số ở bên trái vị trí thập phân trở thành số không.
Ví dụ:
SELECT TRUNCATE(5824.17, -2);
Kết quả:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
So với ROUND()
TRUNCATE()
hàm khác với ROUND()
hàm số. ROUND()
hàm làm tròn số lên trong một số trường hợp và giảm xuống ở một số trường hợp khác. TRUNCATE()
mặt khác, hàm này chỉ đơn giản là cắt bớt số mà không làm tròn số.
Dưới đây là một so sánh để chứng minh sự khác biệt này:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Kết quả:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Nó cũng khác với FLOOR()
hàm, trả về giá trị số nguyên lớn nhất không lớn hơn đối số của nó. FLOOR()
không chấp nhận đối số thứ hai như ROUND()
và TRUNCATE()
do (dù sao nó cũng chỉ trả về một số nguyên).
Đối số không phải dạng số
Đây là những gì sẽ xảy ra khi chúng tôi cung cấp đối số không phải là số:
SELECT TRUNCATE('Ten', 'Two');
Kết quả:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Hãy kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Số lượng đối số không hợp lệ
Đang gọi TRUNCATE()
với số lượng đối số sai hoặc không có đối số dẫn đến lỗi:
SELECT TRUNCATE();
Kết quả:
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
Và:
SELECT TRUNCATE(1, 2, 3);
Kết quả:
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