Sử dụng CAST() chuyển kiểu dữ liệu trước khi thực hiện phép toán để đảm bảo độ chính xác (tránh chia nguyên).
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable1352 (Value1 INT, Value2 INT);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable1352 VALUES(10, 30), (40, 60), (110, 130);
Xem dữ liệu:
mysql> SELECT * FROM DemoTable1352;
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 10 | 30 | | 40 | 60 | | 110 | 130 | +--------+--------+
Ép Value1 sang DECIMAL(18,14) rồi chia cho Value2:
mysql> SELECT CAST(Value1 AS DECIMAL(18,14)) / Value2 FROM DemoTable1352;
Kết quả (số thực chính xác):
+-----------------------------------------+ | CAST(Value1 AS DECIMAL(18,14)) / Value2 | +-----------------------------------------+ | 0.333333333333333333 | | 0.666666666666666666 | | 0.846153846153846153 | +-----------------------------------------+
Giải thích:
- Nếu không CAST:
10/30trong MySQL trả về0.3333(tự động chuyển float), nhưng độ chính xác phụ thuộc ngữ cảnh. DECIMAL(18,14): 18 chữ số tổng, 14 chữ số sau dấu phẩy - độ chính xác cao.- Có thể dùng
Value1 * 1.0 / Value2hoặcValue1 / Value2 + 0.0để ép ngầm sang float.
Lưu ý: DECIMAL tính toán chính xác (exact), FLOAT/DOUBLE gần đúng (approximate). Dùng DECIMAL cho tài chính.