sql - MySQL - 如何用“0”填充前面的邮政编码?
在我的MySQL InnoDB数据库中,我有要清理的脏邮政编码数据。
干净的邮政编码数据是当我拥有邮政编码的所有5位数字时(例如“90210”)。
但出于某种原因,我注意到在我的数据库中,对于以“0”开头的邮政编码,0已被删除。
所以带有邮政编码“02026”的“Holtsville,New York”在我的数据库中存储为“2026”
和
邮编“02026”的“Dedham,MA”在我的数据库中存储为“2026”。
我可以在前面填充“0”到任何长度不是5位的邮政编码的SQL上运行什么SQL? 意思是,如果邮政编码长度为3位,则前垫“00”。 如果邮政编码长度为4位,则前面板只有“0”。
更新:
我刚刚将邮政编码更改为数据类型VARCHAR(5)
8个解决方案
181 votes
将您的邮政编码存储为CHAR(5)而不是数字类型,或者在从数据库加载时将应用程序填充为零。 使用LPAD()进行PHP的方法:
echo sprintf("%05d", 205); // prints 00205
echo sprintf("%05d", 1492); // prints 01492
或者您可以使用LPAD()为MySQL填充它:
SELECT LPAD(zip, 5, '0') as zipcode FROM table;
这是一种更新和填充所有行的方法:
ALTER TABLE `table` CHANGE `zip`