在ZipCode
数据库中保存PostgreSQL
值的正确列类型是什么?
答案 0 :(得分:15)
我非常不同意这里提出的建议。
我的观点:
答案 1 :(得分:7)
类似于xxxxx-xxxx,因此建议使用varchar(10)
。
如果要检查数据库中值的语法,可以为邮政编码创建domain
类型。
CREATE DOMAIN zipcode varchar(10)
CONSTRAINT valid_zipcode
CHECK (VALUE ~ '[A-Z0-9-]+'); -- or a better regular expression
您可以查看this网站,该网站建议使用此正则表达式:
(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$)
但是你应该检查它是否适用于PostgreSQL
正则表达式语法。
答案 2 :(得分:0)
这取决于你想要的拉链类型。如果你确定你只需要存储标准的5位数字,那么使用int将是最节省空间的。
但是如果你需要进行5 + 4扩展,那么10位数字符字段最好。我个人建议,如果你最终需要存储国际邮政编码,它确实会使它变得更容易10位数几乎涵盖我遇到的每种可能的邮政编码格式。