Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / Database / Truy vấn dữ liệu kiểu Float trong MySQL – Nhật ký lập trình [Chapter 8]

Truy vấn dữ liệu kiểu Float trong MySQL – Nhật ký lập trình [Chapter 8]

Vừa qua, Ngô Tôn có gặp một trường hợp xảy ra khi thực hiện 1 câu truy vấn cơ sở dữ liệu MySQL khi thiết kế website với PHP với cột có kiểu Float.

Cụ thể, khi mình thực hiện đoạn lệnh sau đây thì gặp lỗi.

Rõ ràng câu lệnh SELECT là không sai, nhưng vẫn không ra kết quả. Sau một hồi kiểm tra dữ liệu mình phát hiện ra cột my_float_column có kiểu dữ liệu là Float. Vấn đề này có trên document của MySQL!

Theo như giải thích của MySQL thì, dữ liệu được lưu kiểu Float và Double mang giá trị gần đúng chứ không được lưu chính xác. Vì vậy, giá trị khi thêm từ câu truy vấn trên không bằng với giá trị được hiển thị.

Nếu bạn lưu giá trị 1.3 trong cột kiểu foat của cơ sở dữ liệu của bạn, MySQL thực chất sẽ lưu là 1.2999999523162842. Bạn có thế kiểm tra bằng câu lệnh SQL sau:

Sai số này cũng phụ thuộc vào nền tảng hay quá trình thực thi dữ liệu.

Vì lý do này, tốt hơn và chính xác hơn nhiều nếu bạn có thể sử dụng kiểu dữ liệu Integer hoặc Decimal thay vì Float. Nếu bạn đang lưu trữ các giá trị tiền, bạn có thể lưu trữ các giá trị kiểu Integer hay Decimal.

Trong trường hợp bạn phải viết truy vấn đúng với kiểu Float thì đây là cách để bạn thực hiện điều này.

Chúc các bạn thành công.

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Leave a Reply

avatar
  Subscribe  
Notify of