หมายเลขโทรศัพท์ทั่วโลกที่ยาวที่สุดที่เป็นไปได้ที่ฉันควรพิจารณาใน SQL varchar (ความยาว) สำหรับโทรศัพท์คืออะไร


200

หมายเลขโทรศัพท์ทั่วโลกที่ยาวที่สุดที่เป็นไปได้ที่ฉันควรพิจารณาใน SQL varchar(length)สำหรับโทรศัพท์คืออะไร

การพิจารณา:

  • + สำหรับรหัสประเทศ
  • () สำหรับรหัสพื้นที่
  • x + 6 ตัวเลขสำหรับส่วนขยายส่วนขยาย (ให้เป็น 8 {space})
  • ช่องว่างระหว่างกลุ่ม (เช่นในโทรศัพท์อเมริกา + x xxx xxx xxxx = 3 ช่องว่าง)
  • ที่นี่คือที่ที่ฉันต้องการความช่วยเหลือจากคุณฉันต้องการให้มันเป็นทั่วโลก

พิจารณาว่าในกรณีของฉันตอนนี้ฉันไม่ต้องการการ์ดและหมายเลขอื่น ๆ เริ่มต้นด้วยรหัสประเทศและลงท้ายด้วยนามสกุลไม่มีแฟกซ์ / โทรศัพท์ ฯลฯ แสดงความคิดเห็นหรือไม่ต้องใช้บัตรโทรศัพท์


1
ฉันคิดว่าการแปลงตัวเลขให้เป็นมูลค่าที่ยาวนานนั้นจะเป็นทางออกที่ดีและมันต้องการพื้นที่ 64 บิตฉันใช้มันมานานหลายปีแล้วไม่มีปัญหา


1
@MattDiPasquale พูดถึงแล้วที่นี่แต่ขอบคุณ!
Shimmy Weitzhandler

2
ใช่ แต่คำตอบนั้นไม่มีลิงค์ที่ฉันให้ ไม่เป็นไร :-)
ma11hew28

คำตอบ:


79

การพิจารณาว่าไม่มีความแตกต่างของค่าใช้จ่ายระหว่าง varchar (30) และ varchar (100) หากคุณเพียงเก็บอักขระ 20 ตัวในแต่ละข้อผิดพลาดที่อยู่ด้านข้างของความระมัดระวังและเพียงแค่ทำให้มัน 50


26
เพียงเพื่อความรู้: ดังนั้นเมื่อมีค่าใช้จ่ายใด ๆ โปรดใส่แหล่งที่มาในคำตอบของคุณเพื่อให้เราสามารถไปข้างหน้าและเรียนรู้พื้นฐานจากมัน
Shimmy Weitzhandler

6
ฉันรู้ว่าควรเป็นอย่างนั้น แต่ก็ไม่เสมอไป ใน MySQL (ตัวอย่าง) ความยาวเต็มใช้สำหรับการจัดเรียง ควรใช้ความพยายามอย่างน้อยที่สุด
Morgan Tocker

15
ไม่มีความแตกต่างของขนาดพื้นที่จัดเก็บระหว่างขนาดคอลัมน์ทั้งสอง มีความเป็นไปได้สูงมากว่าจะมีค่าใช้จ่ายสูงหรือมีนัยสำคัญขึ้นอยู่กับฐานข้อมูลเฉพาะของคุณ ตัวอย่างเช่น SQL Server สูญเสียความสามารถในการทำนายขนาดหน้าข้อมูลและปรับการเข้าถึงและการจัดแนวให้เหมาะสม เช่นเคยทดสอบ
Matt Enright

16
การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด
Harindaka

79
การวางตัวในแนวตั้งโดยทั่วไปนั้นแย่ยิ่งกว่าเดิม การออกแบบระบบที่มีการเพิ่มประสิทธิภาพในใจก็คือไม่เคย ชั่วร้าย ต่อ SE - การเพิ่มประสิทธิภาพจะกลายเป็นความชั่วร้ายเมื่อหนึ่งอุทิศจำนวนมากมายของเวลาที่จะไม่จำเป็นสังเกตและรายย่อยที่มีประสิทธิภาพ
jbowman

167

สมมติว่าคุณไม่ได้จัดเก็บสิ่งต่าง ๆ เช่น '+', '()', '-', ช่องว่างและสิ่งที่คุณมี (และทำไมคุณถึงเป็นเช่นนั้นพวกเขาเป็นข้อกังวลเกี่ยวกับการนำเสนอซึ่งจะแตกต่างกันไปตามประเพณีท้องถิ่น อย่างไรก็ตาม) คำแนะนำ ITU-T E.164สำหรับเครือข่ายโทรศัพท์ระหว่างประเทศ (ซึ่งเครือข่ายระดับประเทศส่วนใหญ่เชื่อมต่อผ่าน) ระบุว่าหมายเลขทั้งหมด (รวมถึงรหัสประเทศ แต่ไม่รวมส่วนนำหน้าเช่นหมายเลขนำหน้าการโทรระหว่างประเทศที่จำเป็นสำหรับการโทรออก ซึ่งแตกต่างกันไปในแต่ละประเทศไม่รวมถึงส่วนต่อท้ายเช่นหมายเลขนามสกุล PBX) เป็นที่มากที่สุด15 ตัวอักษร

คำนำหน้าการโทรขึ้นอยู่กับผู้โทรไม่ใช่ผู้รับสายและดังนั้นจึงไม่ควรเก็บไว้ในหมายเลขโทรศัพท์ หากฐานข้อมูลจัดเก็บข้อมูลสำหรับสมุดที่อยู่ส่วนบุคคล (ซึ่งในกรณีนี้คือการจัดเก็บคำนำหน้าการโทรระหว่างประเทศให้เหมาะสม) คำนำหน้าระหว่างประเทศที่ยาวที่สุดที่คุณต้องจัดการ ( ตาม Wikipedia ) เป็นตัวเลข 5 หลักในฟินแลนด์

สำหรับคำต่อท้าย PBX บางตัวรองรับส่วนขยายได้ถึง 11 หลัก (อีกครั้งตาม Wikipedia ) เนื่องจากหมายเลขส่วนขยาย PBX เป็นส่วนหนึ่งของแผนการโทรออกที่แตกต่างกัน (PBX แยกจากการแลกเปลี่ยนของ บริษัท โทรศัพท์) หมายเลขส่วนขยายจึงต้องแยกความแตกต่างจากหมายเลขโทรศัพท์ไม่ว่าจะด้วยอักขระตัวคั่นหรือเก็บไว้ในคอลัมน์อื่น


5
หากคุณไม่ได้จัดเก็บอักขระรูปแบบ (เช่น '+', '(', ')', '-' และ '') และคุณกำลังจัดเก็บตัวเลขจากประเทศต่าง ๆ คุณอาจต้องการเพิ่มคอลัมน์เพื่อระบุรูปแบบ ชนิดของหมายเลขเมื่อแสดงหมายเลข
Trisped

38
บรรทัดด้านล่าง: 15ตัวอักษร หากการจัดเก็บคำนำหน้าและคำต่อท้ายบรรทัดล่างคือ: 5 + 15 + 11 31=
AlikElzin-kilaka

3
@ MattEnright ฉันคิดว่าคุณควรอัปเดตความคิดเห็นของ AlikElzin ในคำตอบของคุณ
Shimmy Weitzhandler

4
'+' ไม่ใช่ presentational en.wikipedia.org/wiki/List_of_international_call_prefixes
qubodup

17

ในข้อมูลจำเพาะ GSM 3GPP TS 11.11มีการตั้งค่า 10 ไบต์ใน MSISDN EF (6F40) สำหรับ 'หมายเลขโทร' เนื่องจากนี่คือการแสดงหมายเลขโทรศัพท์ GSM และการใช้งานนั้นเปลี่ยนไปอย่างรวดเร็ว (และมีความเป็นไปได้ในวงเล็บเสมอ) ข้อมูล 22 ตัวอักษรควรมีมากมาย

จากประสบการณ์ของฉันมีวงเล็บเปิด / ปิดเพียงตัวอย่างเดียวนั่นคือเหตุผลของฉันสำหรับข้างต้น


10

มันแย่กว่านี้เล็กน้อยฉันใช้บัตรโทรศัพท์สำหรับการโทรระหว่างประเทศดังนั้นหมายเลขท้องถิ่นในสหรัฐฯ + บัญชี # (6 หลัก) + พิน (4 หลัก) + "หยุดชั่วคราว" + สิ่งที่คุณอธิบายไว้ข้างต้น

ฉันสงสัยว่าอาจมีกรณีอื่น


2
คุณได้คะแนนที่ดีมาก ฉันได้เพิ่มข้อความไม่กี่บรรทัดลงในข้อความของฉันโปรดอ่าน
Shimmy Weitzhandler

10
การโทรซ้ำหมายเลขบัตรโทรศัพท์ไม่ควรอยู่ในฐานข้อมูล - นี่คือส่วนที่รับเพิ่มเมื่อโทรออกตามกฎการหมุนหมายเลข หมายเลขที่จัดเก็บควรอยู่ในรูปแบบ ISO โดยไม่มีข้อมูลที่เกี่ยวข้องกับการหมุนหมายเลขใด ๆ
TomTom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.