คำอธิบาย
ใช้ FLOOR() ปัดเศษทิ้งทศนิยม แล้วเปรียบเทียบกับค่าเดิม หากเท่ากัน แสดงว่าทศนิยมเป็น .00 (จำนวนเต็ม)
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
Value DECIMAL(4,2) );
Query OK, 0 rows affected (0.53 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable values(54.20); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(55.0); Query OK, 1 row affected (0.24 sec) mysql> insert into DemoTable values(7.8); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(9.0); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(9.2); Query OK, 1 row affected (0.21 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์:
+-------+ | Value | +-------+ | 54.20 | | 55.00 | | 7.80 | | 9.00 | | 9.20 | +-------+ 5 rows in set (0.00 sec)
คิวรี่กรองเฉพาะค่าที่ทศนิยมเป็น .00
mysql> select * from DemoTable where Value = FLOOR(Value);
ผลลัพธ์
+-------+ | Value | +-------+ | 55.00 | | 9.00 | +-------+ 2 rows in set (0.02 sec)
คำอธิบาย
- FLOOR(55.00) = 55 → เท่ากับ 55.00 ✓
- FLOOR(9.00) = 9 → เท่ากับ 9.00 ✓
- FLOOR(54.20) = 54 ≠ 54.20 ✗
- FLOOR(7.80) = 7 ≠ 7.80 ✗
- FLOOR(9.20) = 9 ≠ 9.20 ✗
วิธีอื่น
-- ใช้ MOD (Modulo) WHERE MOD(Value, 1) = 0 -- ใช้ TRUNCATE WHERE Value = TRUNCATE(Value, 0) -- ใช้ CAST (MySQL 8.0+) WHERE Value = CAST(Value AS UNSIGNED)
ข้อควรระวัง
FLOAT/DOUBLE อาจมีปัญหา Precision (เช่น 9.0000000001) ควรใช้ DECIMAL สำหรับเงิน/การคำนวณที่ต้องแม่นยำ