เป็นเรื่องปกติที่จะเก็บหมายเลขโทรศัพท์ไว้ใน database ที่เรารู้ ๆ คือ มือถือจะเป็น 10 หลัก โทรศัพท์บ้าน 9 หลัก แต่มันคือ ประเทศไทย แล้วประเทศอื่นละ ลูกค้าต่างชาติ
โครงสร้างหมายเลขโทรศัพท์
หมายเลขโทรศัพท์มือถือประกอบด้วย 2 ส่วนหลัก ๆ ได้แก่
- รหัสประเทศ ( Country Code ): เป็นรหัสที่ใช้ระบุประเทศ เช่น +66 สำหรับประเทศไทย 🇹🇭 หรือ +1 สำหรับสหรัฐอเมริกา 🇺🇸 รหัสเหล่านี้มีจำนวนตั้งแต่ 1 ถึง 3 หลัก
- หมายเลขโทรศัพท์ในประเทศ ( National Significant Number ): เป็นหมายเลขที่ใช้โทรภายในประเทศนั้น ๆ โดยจำนวนหลักจะแตกต่างกันไปในแต่ละประเทศ
จำนวนหลักสูงสุด
ตามคำแนะนำของสหภาพโทรคมนาคมระหว่างประเทศ ( International Telecommunication Union – ITU ) ซึ่งเป็นหน่วยงานที่กำหนดมาตรฐานการสื่อสารโทรคมนาคมทั่วโลก ได้กำหนดว่าหมายเลขโทรศัพท์มือถือที่ใช้สำหรับระบบโทรศัพท์ระหว่างประเทศ (E.164) สามารถมีความยาวได้สูงสุด 15 หลัก ตัวอย่างเช่น
- 1 ( รหัสประเทศสหรัฐอเมริกา ) + 555 ( รหัสพื้นที่ ) + 5551234 ( หมายเลขโทรศัพท์ ) = 11 หลัก
- 999 ( รหัสประเทศที่สมมติขึ้น ) + 12345678912 ( หมายเลขโทรศัพท์ ) = 14 หลัก
เก็บยังไงดี
- รหัสประเทศ ( Country Code ) ถ้ามีการเก็บ Country Code อยู่แล้ว จริง ๆ เราก็ไม่จำเป็นต้องเก็บรหัสประเทศของโทรศัพท์อีก ?
- ถ้าเป็นคนที่ไป ๆ มา ๆ ระหว่างประเทศละ แบบนี้การเก็บ รหัสประเทศแทนเลข 0 ตัวแรกไปเลย น่าจะดีกว่า อย่าง โปรแกรม Goolgle: Contacts เองก็เก็บแบบนี้
- หมายเลขโทรศัพท์ในประเทศ ในเมื่อเรารวม รหัสประเทศ ไว้ในข้อมูลชุดเดียวกันแล้ว
- เก็บเป็น varchar 15 ไปเลย พอแน่ ๆ
- ui / ux ค่อยเขียนเงื่อนไขว่า ถ้าเป็นประเทศไทย (66)123456789 แบบนี้ค่อยเปลี่ยน รหัสประเทศ เป็น 0 เพื่อความเคยชิน รู้ว่าเป็นเบอร์ในประเทศ
อ่านเพิ่มเติม
