Lọc số thập phân có phần thập phân bằng 0 trong MySQL
Sử dụng hàm FLOOR() (làm tròn xuống) so sánh với giá trị gốc: nếu Value = FLOOR(Value) thì phần thập phân = 0 (số nguyên).
1. Tạo bảng kiểu DECIMAL(4,2)
mysql> CREATE TABLE DemoTable (Value DECIMAL(4,2));
mysql> INSERT INTO DemoTable VALUES (54.20), (55.0), (7.8), (9.0), (9.2);
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+-------+ | Value | +-------+ | 54.20 | | 55.00 | | 7.80 | | 9.00 | | 9.20 | +-------+
3. Truy vấn: Lọc giá trị phần thập phân = 0
mysql> SELECT * FROM DemoTable WHERE Value = FLOOR(Value);
4. Kết quả
+-------+ | Value | +-------+ | 55.00 | | 9.00 | +-------+
Giải thích:
FLOOR(54.20)= 54 ≠ 54.20 → loạiFLOOR(55.00)= 55 = 55.00 → giữFLOOR(7.80)= 7 ≠ 7.80 → loạiFLOOR(9.00)= 9 = 9.00 → giữFLOOR(9.20)= 9 ≠ 9.20 → loại
Các cách khác:
WHERE Value = CAST(Value AS UNSIGNED)(chỉ số dương)WHERE Value % 1 = 0(modulo 1 = phần thập phân)WHERE Value - FLOOR(Value) = 0WHERE TRUNCATE(Value, 0) = Value
Lưu ý: Với số âm, FLOOR(-1.5) = -2 (khác TRUNCATE(-1.5,0) = -1). Dùng TRUNCATE an toàn hơn cho số âm.
Ứng dụng: Làm sạch dữ liệu, tìm giá tiền tròn, lọc số lượng nguyên từ cột DECIMAL.