我希望在我的Oracle数据库中该列为VARCHAR2。
美国邮政编码为9。
加拿大人是7。
我认为32个字符是合理的上限
我想念什么?
[编辑] TIL:对于这个问题,合理的答案是12。感谢所有贡献者。
我希望在我的Oracle数据库中该列为VARCHAR2。
美国邮政编码为9。
加拿大人是7。
我认为32个字符是合理的上限
我想念什么?
[编辑] TIL:对于这个问题,合理的答案是12。感谢所有贡献者。
Answers:
浏览Wikipedia的邮递区号页面,32个字符应该绰绰有余。我会说甚至16个字符也不错。
正如@ neil-mcguigan所提出的那样,Wikipedia在该主题上有一个不错的页面。基于这12个字符,应该这样做:http : //en.wikipedia.org/wiki/List_of_postal_codes
维基百科文章列出了254个国家/地区,对于万国邮政联盟(UPU)有192 个国家/地区来说,这是相当不错的。
为什么您要声明一个大于预期要存储在其中的实际数据的字段大小?
如果您的应用程序的初始版本将支持美国和加拿大地址(从您在问题中标注出这些大小的事实推断出这点),我将将该字段声明为VARCHAR2(9)(或VARCHAR2( 10)如果您打算将连字符存储在ZIP + 4字段中)。即使查看其他国家/地区对邮政编码的帖子,VARCHAR2(9)或VARCHAR2(10)对于大多数(即使不是全部)其他国家也足够了。
您可以随时更改列以增加长度,如果需要的话。但是,通常很难阻止某人某个或某个地方出于某种原因(即,因为他们想要在运输标签上添加另一行)而决定“创建”并将50个字符填充到VARCHAR2(50)字段中。您还必须处理边界情况的测试(每个显示ZIP的应用程序都会处理50个字符吗?)。而且,当客户端从数据库中检索数据时,它们通常是根据要获取的数据的最大大小而不是给定行的实际长度来分配内存。在这种特定情况下,可能不是什么大问题,但在某些情况下,每行40字节可能是不错的RAM。
顺便说一句,您也可以考虑(至少针对美国地址)分别存储邮政编码和+4扩展名。能够按地理区域生成报告通常很有用,并且您可能经常希望将所有内容都放在一个邮政编码中,而不是用+4扩展名对其进行分解。在这一点上,不必尝试将邮政编码的前5个字符替换掉是很有用的。
您缺少的是为什么需要对邮政编码进行特殊处理的原因。
如果你并不真的需要工作与邮政编码,我会建议不要担心。通过工作,我的意思是要进行特殊处理,而不仅仅是打印地址标签等等。
只需创建VARCHAR2(50)的三个或四个地址字段即可,例如,让用户输入所需的内容。
您是否真的需要按邮政编码对订单或交易进行分组?我认为不是,因为不同的国家在该领域有不同的计划。
正常化?邮政编码可能会使用多次,并且可能与街道名称或城镇名称有关。单独的表格。
加拿大邮政编码只有6个字符,采用字母和数字(LNLNLN)的形式
英国已发布标准:英国政府数据标准目录
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
如果要将邮政编码集成到数据库中,则最好使用地理名称数据库。尽管很难使用和理解,但它是最大的地理数据库,可供我们这样的用户免费使用。
所有其他此类数据库或多或少都具有相同的数据和结构。他们只是从数据库中删除一些多余/多余的信息。如果您仅针对低负载系统使用免费服务,那么这些限制很有吸引力,并且可以使用json和ajax提供更简单的界面。您可以在此处查看限制
对于您的信息,varchar(20)足以存储邮政编码