Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ชนิดข้อมูลที่ดีที่สุดสำหรับเก็บค่าเงินใน MySQL


ใน 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 เพราะมีปัญหาความแม่นยำทศนิยม