当前位置:  开发笔记 > 程序员 > 正文

我需要将邮政编码存储在数据库中.这个专栏应该有多大?

如何解决《我需要将邮政编码存储在数据库中.这个专栏应该有多大?》经验,为你挑选了3个好方法。

我希望在我的Oracle数据库中该列是VARCHAR2.

美国拉链是9.

加拿大人7岁.

我认为32个字符是合理的上限

我错过了什么?

[编辑] TIL:12是这个问题的合理答案感谢所有贡献的人.



1> strager..:

浏览维基百科的邮政编码页面,32个字符应该绰绰有余.我会说甚至16个字符都很好.


好的链接.即使考虑到美国ZIP + 4中的标点符号,就我所知,10个字符对于任何国家都足够了.
智利是7个字符.您引用的网页只显示标点符号差异.

2> Vajk Hermecz..:

正如@ n​​eil-mcguigan已经提出的那样,维基百科在这个主题上有一个不错的页面.基于这12个字符应该这样做:http://en.wikipedia.org/wiki/List_of_postal_codes

维基百科的文章列出了约254个国家,这相当于UPU(万国邮政联盟)有192个成员国.


请注意,蒙特塞拉特只有8个字符,1110-1350表示范围。https://discovermni.com/about-montserrat/montserrat-post-codes/

3> Justin Cave..:

为什么要声明字段大小大于您希望存储在其中的实际数据?

如果您的应用程序的初始版本将支持美国和加拿大地址(我推断您在问题中调出这些大小的事实),我会将该字段声明为VARCHAR2(9)(或VARCHAR2( 10)如果您打算将连字符存储在ZIP + 4字段中).即使查看其他国家对各国邮政编码的帖子,VARCHAR2(9)或VARCHAR2(10)对于大多数其他国家也是如此.

在线下,您可以随时更改列以在需要时增加长度.但是,由于某种原因(即因为他们想要在运输标签上使用另一条线),通常很难阻止某人在某处决定"创造性"并将50个字符填充到VARCHAR2(50)字段中.您还必须处理测试边界情况(每个显示ZIP句柄的应用程序将处理50个字符?).而且,当客户端从数据库中检索数据时,它们通常根据将要获取的数据的最大大小而不是给定行的实际长度来分配内存.在这种特定情况下可能不是很大,但在某些情况下,每行40个字节可能是一块不错的RAM.

另外,您也可以考虑分别存储(至少对于美国地址)邮政编码和+4扩展名.能够按地理区域生成报告通常很有用,您可能经常希望将所有内容放在一起使用邮政编码,而不是通过+4扩展将其分解.此时,不必尝试SUBSTR输出邮政编码的前5个字符是有用的.


好吧,假设我们正在编写像Pro*C这样愚蠢的东西,让字段足够大以便增长意味着如果使用量增加则不需要触及代码.
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有