ฉันคาดว่าคอลัมน์จะเป็น VARCHAR2 ใน Oracle Database ของฉัน
US Zips คือ 9
แคนาดาคือ 7
ฉันคิดว่า 32 อักขระน่าจะเป็นขีด จำกัด บนที่สมเหตุสมผล
ฉันขาดอะไรไป?
[แก้ไข] TIL: 12 เป็นคำตอบที่สมเหตุสมผลสำหรับคำถามขอบคุณทุกคนที่มีส่วนร่วม
ฉันคาดว่าคอลัมน์จะเป็น VARCHAR2 ใน Oracle Database ของฉัน
US Zips คือ 9
แคนาดาคือ 7
ฉันคิดว่า 32 อักขระน่าจะเป็นขีด จำกัด บนที่สมเหตุสมผล
ฉันขาดอะไรไป?
[แก้ไข] TIL: 12 เป็นคำตอบที่สมเหตุสมผลสำหรับคำถามขอบคุณทุกคนที่มีส่วนร่วม
คำตอบ:
การอ่านผ่านหน้ารหัสไปรษณีย์ของ Wikipedia 32 ตัวอักษรน่าจะเกินพอแล้ว ฉันจะบอกว่าแม้ 16 ตัวอักษรก็ดี
ตามที่ยกมาโดย @ neil-mcguigan, wikipedia มีหน้าที่เหมาะสมในหัวข้อนี้ ตามอักขระ 12 ตัวที่ควรทำ: http://en.wikipedia.org/wiki/List_of_postal_codes
บทความวิกิพีเดียแสดงรายชื่อประเทศประมาณ 254 ประเทศซึ่งค่อนข้างดีเกี่ยวกับUPU (Universal Postal Union)มีสมาชิก 192 ประเทศ
เหตุใดคุณจึงประกาศขนาดเขตข้อมูลที่ใหญ่กว่าข้อมูลจริงที่คุณคาดว่าจะจัดเก็บในนั้น
หากเวอร์ชันเริ่มต้นของแอปพลิเคชันของคุณจะรองรับที่อยู่ในสหรัฐอเมริกาและแคนาดา (ซึ่งฉันอนุมานจากข้อเท็จจริงที่ว่าคุณเรียกขนาดเหล่านั้นในคำถามของคุณ) ฉันจะประกาศฟิลด์นี้เป็น VARCHAR2 (9) (หรือ VARCHAR2 ( 10) หากคุณต้องการจัดเก็บยัติภังค์ในช่อง ZIP + 4) แม้แต่การดูโพสต์ที่คนอื่นทำกับรหัสไปรษณีย์ข้ามประเทศ VARCHAR2 (9) หรือ VARCHAR2 (10) ก็เพียงพอแล้วหากไม่ใช่ประเทศอื่น ๆ ทั้งหมด
ในบรรทัดคุณสามารถแก้ไขคอลัมน์เพื่อเพิ่มความยาวได้ตลอดเวลาหากจำเป็นต้องใช้ แต่โดยทั่วไปแล้วเป็นการยากที่จะป้องกันไม่ให้ใครบางคนตัดสินใจรับ "ความคิดสร้างสรรค์" และใส่อักขระ 50 ตัวลงในช่อง VARCHAR2 (50) ด้วยเหตุผลใดเหตุผลหนึ่ง (เช่นเพราะพวกเขาต้องการบรรทัดอื่นบนป้ายกำกับการจัดส่ง) คุณต้องจัดการกับการทดสอบกรณีขอบเขต (ทุกแอปพลิเคชันที่แสดง ZIP จะรองรับอักขระ 50 ตัวหรือไม่) และด้วยความจริงที่ว่าเมื่อไคลเอนต์ดึงข้อมูลจากฐานข้อมูลโดยทั่วไปแล้วพวกเขาจะจัดสรรหน่วยความจำตามขนาดสูงสุดของข้อมูลที่จะดึงไม่ใช่ความยาวจริงของแถวที่กำหนด อาจไม่ใช่เรื่องใหญ่ในกรณีนี้ แต่ 40 ไบต์ต่อแถวอาจเป็นหน่วยความจำที่เหมาะสมสำหรับบางสถานการณ์
นอกจากนี้คุณยังอาจพิจารณาจัดเก็บ (อย่างน้อยสำหรับที่อยู่ในสหรัฐอเมริกา) รหัสไปรษณีย์และส่วนขยาย +4 แยกกัน โดยทั่วไปจะมีประโยชน์ในการสร้างรายงานตามภูมิภาคทางภูมิศาสตร์และคุณอาจต้องการรวมทุกอย่างไว้ในรหัสไปรษณีย์เข้าด้วยกันแทนที่จะแยกย่อยด้วยส่วนขยาย +4 ณ จุดนั้นการไม่ต้องพยายาม SUBSTR 5 อักขระแรกสำหรับรหัสไปรษณีย์ก็มีประโยชน์
สิ่งที่คุณขาดหายไปคือสาเหตุที่คุณต้องจัดการรหัสไปรษณีย์เป็นพิเศษ
หากคุณไม่จำเป็นต้องทำงานกับรหัสไปรษณีย์จริงๆฉันขอแนะนำว่าอย่ากังวลเกี่ยวกับเรื่องนี้ โดยการทำงานฉันหมายถึงการประมวลผลแบบพิเศษแทนที่จะใช้เพื่อพิมพ์ฉลากที่อยู่และอื่น ๆ
เพียงสร้างช่องที่อยู่สามหรือสี่ช่องของ VARCHAR2 (50) [ตัวอย่าง] และให้ผู้ใช้ป้อนสิ่งที่ต้องการ
คุณจำเป็นต้องจัดกลุ่มคำสั่งซื้อหรือธุรกรรมของคุณด้วยรหัสไปรษณีย์หรือไม่? ฉันคิดว่าไม่เนื่องจากประเทศต่างๆมีรูปแบบที่แตกต่างกันอย่างมากสำหรับสาขานี้
นอร์มัลไลเซชัน? อาจมีการใช้รหัสไปรษณีย์มากกว่าหนึ่งครั้งและอาจเกี่ยวข้องกับชื่อถนนหรือชื่อเมือง แยกโต๊ะ
รหัสไปรษณีย์ของแคนาดามีความยาวเพียง 6 อักขระในรูปแบบตัวอักษรและตัวเลข (LNLNLN)
สหราชอาณาจักรได้เผยแพร่มาตรฐาน: UK Government Data Standards Catalog
Max 35 characters per line
ที่อยู่ไปรษณีย์ระหว่างประเทศ:
Minimum of 2 lines and maximum of 5 lines for the postal delivery point
details, plus 1 line for country and 1 line for postcode/zip code
รหัสไปรษณีย์ของสหราชอาณาจักรมีความยาว:
Minimum 6 and Maximum 8 characters
หากคุณต้องการรวมรหัสไปรษณีย์ในฐานข้อมูลฐานข้อมูล geonames จะดีที่สุด แม้ว่าจะใช้งานและเข้าใจได้ยาก แต่ก็เป็นฐานข้อมูลทางภูมิศาสตร์ที่ใหญ่ที่สุดที่ผู้ใช้อย่างเราสามารถใช้ได้โดยเสรี
ฐานข้อมูลอื่น ๆ ทั้งหมดมีโอกาสมากหรือน้อยที่มีข้อมูลและโครงสร้างเดียวกัน พวกเขาเพียงแค่ลบข้อมูลเพิ่มเติม / ซ้ำซ้อนออกจากฐานข้อมูล หากคุณกำลังทำมันสำหรับระบบโหลดต่ำให้ใช้บริการฟรีของพวกเขาข้อ จำกัด นั้นน่าดึงดูดและมีอินเทอร์เฟซที่ง่ายกว่าโดยใช้ json และ ajax คุณสามารถดูขีด จำกัด ได้ที่นี่
สำหรับข้อมูลของคุณ varchar (20) เพียงพอสำหรับการจัดเก็บรหัสไปรษณีย์