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.

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. [crayon-5a15218da2527791823158/] 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…

User Rating: 5 ( 1 votes)

About ngoton

Ngô Tôn is a programmer. He is crazy about new gadgets and up to date with latest technology trends. Use comments to notify any issues you are facing.

Leave a Reply

Your email address will not be published. Required fields are marked *