ใน MySQL ควรใช้ชนิดข้อมูล DECIMAL(value1, value2) สำหรับเก็บค่าเงิน โดย:
value1= จำนวนหลักทั้งหมด (precision) รวมทศนิยมvalue2= จำนวนหลักหลังจุดทศนิยม (scale)
ตัวอย่าง: สร้างตาราง MoneyDemo ด้วย DECIMAL(10,2) หมายถึงสูงสุด 10 หลัก มีทศนิยม 2 หลัก
mysql> CREATE table MoneyDemo -> ( -> Id int, -> Money decimal(10,2) -> ); Query OK, 0 rows affected (0.46 sec)
เพิ่มข้อมูล:
mysql> INSERT into MoneyDemo values(1,98777445.50); Query OK, 1 row affected (0.13 sec) mysql> INSERT into MoneyDemo values(2,12345678.00); Query OK, 1 row affected (0.18 sec) mysql> INSERT into MoneyDemo values(3,88888888.50); Query OK, 1 row affected (0.20 sec)
หากใส่เกิน 10 หลัก จะเกิดข้อผิดพลาด:
mysql> INSERT into MoneyDemo values(3,8888888888.50); ERROR 1264 (22003): Out of range value for column 'Money' at row 1
แสดงข้อมูล:
mysql> SELECT * from MoneyDemo;
+------+-------------+ | Id | Money | +------+-------------+ | 1 | 98777445.50 | | 2 | 12345678.00 | | 3 | 88888888.50 | +------+-------------+ 3 rows in set (0.00 sec)
สรุป: ใช้ DECIMAL เพื่อความแม่นยำ ไม่ควรใช้ FLOAT หรือ DOUBLE เพราะมีปัญหาความแม่นยำทศนิยม