【发布时间】:2010-07-08 04:56:31
【问题描述】:
在我的 MySQL InnoDB 数据库中,我有想要清理的脏邮政编码数据。
干净的邮政编码数据是当我拥有一个邮政编码的所有 5 位数字时(例如“90210”)。
但由于某种原因,我注意到在我的数据库中,对于以“0”开头的邮政编码,0 已被删除。
因此,邮政编码为“00544”的“Holtsville, New York”在我的数据库中存储为“544”
和
邮政编码为“02026”的“Dedham, MA”在我的数据库中存储为“2026”。
我可以运行什么 SQL 到任何长度不是 5 位的邮政编码的前面填充“0”?意思是,如果邮政编码长度为 3 位,则前面填充“00”。如果邮政编码长度为 4 位,则前面填充“0”。
更新:
我刚刚将邮政编码更改为数据类型 VARCHAR(5)
【问题讨论】:
-
邮政编码的表格列似乎是数字类型,这导致了问题。在这种情况下,您必须更改数据类型以保留字符数据。
-
@Kangkan,你是对的。我的数据类型是数字。我刚刚将邮政编码转换为 varchar(5)。现在,如何去首页
-
最好使用 CHAR 而不是 VARCHAR。当表变大时,它会大大加快查询速度(但前提是所有其他列的大小都是固定的)
-
还要考虑其他国家的邮政编码并不总是 5 个字符。
标签: sql mysql database database-design