乍一看,在数据库表中存储邮政编码有两种基本选择:
- 文本(可能是最常见的),即
char(5)
或varchar(9)
支持 +4 扩展 - 数字,即 32 位整数
如果我们假设没有国际问题,两者都将满足数据的要求。过去我们通常只是走文本路线,但我想知道是否有人反其道而行之?简单比较一下,整数方法看起来有两个明显的优点:
- 就其性质而言,它自动仅限于数字(而在没有验证的情况下,文本样式可以存储字母等,据我所知,在邮政编码中永远无效)。但这并不意味着我们可以/将/应该放弃正常验证用户输入!
- 它占用的空间更少,为 4 个字节(即使对于 9 位邮政编码也应该足够了),而不是 5 或 9 个字节。
此外,它似乎不会对显示输出造成太大影响。ToString()
在数值上加上 a是微不足道的,使用简单的字符串操作来插入连字符或空格或其他任何 +4 扩展名,并使用字符串格式来恢复前导零。
是否有任何不鼓励将int
其用作仅限美国的邮政编码的数据类型?