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

ชนิดข้อมูล MySQL สำหรับเก็บจำนวนเงิน PayPal (Decimal Amount)

ใช้ DECIMAL(10,2) สำหรับจำนวนเงินมาตรฐาน

PayPal และระบบชำระเงินส่วนใหญ่ใช้ทศนิยม 2 ตำแหน่ง (เซ็นต์/สตางค์) DECIMAL(10,2) รองรับได้สูงสุด 99,999,999.99 (ประมาณ 100 ล้าน) เพียงพอสำหรับธุรกรรมทั่วไป

โครงสร้าง DECIMAL(10,2)

  • 10 = จำนวนหลักทั้งหมด (Precision)
  • 2 = จำนวนหลักทศนิยม (Scale)
  • รองรับ: -99,999,999.99 ถึง 99,999,999.99

ตัวอย่าง完整

mysql> CREATE TABLE DemoTable1491 (
    -> Amount DECIMAL(10,2)
    -> );
Query OK, 0 rows affected (0.66 sec)

mysql> INSERT INTO DemoTable1491 VALUES(987664.50), (18783874.90), (35363738.50);
Query OK, 3 rows affected

ผลลัพธ์

+-------------+
| Amount      |
+-------------+
|   987664.50 |
| 18783874.90 |
| 35363738.50 |
+-------------+

แนวทางปฏิบัติที่ดี (Best Practices)

✅ ควรทำ

  • ใช้ DECIMAL สำหรับเงินทุกประเภท
  • กำหนด Scale = 2 สำหรับสกุลเงินส่วนใหญ่ (บาท, ดอลลาร์, ยูโร)
  • ใช้ UNSIGNED หากไม่มีค่าลบ: DECIMAL(10,2) UNSIGNED
  • จัดเก็บในหน่วยเล็กที่สุด (สตางค์/เซ็นต์) เป็น BIGINT ก็ได้ (เช่น 98766450 = 987,664.50 บาท)

❌ ห้ามทำ

  • ใช้ FLOAT หรือ DOUBLE สำหรับเงิน (มีปัญหาการปัดเศษ Binary Floating Point)
  • ใช้ VARCHAR เก็บเงิน (ยากต่อการคำนวณและเรียงลำดับ)
  • กำหนด Precision น้อยเกินไป (เช่น DECIMAL(5,2) รองรับได้แค่ 999.99)

ขยายขอบเขตสำหรับธุรกรรมใหญ่

-- รองรับสูงสุด 9,999,999,999.99 (เกือบ 10 พันล้าน)
DECIMAL(12,2)

-- รองรับสูงสุด 999,999,999,999.99 (เกือบ 1 ล้านล้าน)
DECIMAL(15,2)