Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Ép kiểu (CAST) một giá trị và chia cho giá trị khác trong MySQL

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/30 trong 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 / Value2 hoặc Value1 / 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.