sql - MySQL-如何在邮政编码前面加上“0”?

标签 sql mysql database database-design

在我的MySQL InnoDB数据库中,我要清除的邮政编码数据很脏。

干净的邮政编码数据是指我的邮政编码全部有5位数字(例如“ 90210”)。

但是由于某种原因,我在数据库中注意到,对于以“ 0”开头的邮政编码,0已被删除。

因此,邮政编码为“ 00544”的“纽约州霍尔茨维尔”以“ 544”存储在我的数据库中



邮政编码为“ 02026”的“ MA,Dedham”在我的数据库中存储为“ 2026”。

我可以使用哪种SQL在长度不为5位的任何邮政编码前面填充“ 0”?意思是,如果邮政编码的长度为3位,则前面板为“ 00”。如果邮政编码的长度为4位,则前面板仅为“ 0”。

更新:

我只是将邮政编码更改为数据类型VARCHAR(5)

最佳答案

将您的邮政编码存储为CHAR(5)而不是数字类型,或者从DB加载时将其填充为零。使用sprintf()使用PHP做到这一点的方法:

echo sprintf("%05d", 205); // prints 00205
echo sprintf("%05d", 1492); // prints 01492


或者您可以让MySQL用LPAD()为它填充:

SELECT LPAD(zip, 5, '0') as zipcode FROM table;


这是更新和填充所有行的方法:

ALTER TABLE `table` CHANGE `zip` `zip` CHAR(5); #changes type
UPDATE table SET `zip`=LPAD(`zip`, 5, '0'); #pads everything

关于sql - MySQL-如何在邮政编码前面加上“0”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846717/

相关文章:

mysql - EXISTS vs IN - 哪一个在MySQL 5.5和MySQL 5.7中更好?

php - 如何使用一个插入语句插入多个项目,同时检测唯一列是否具有重复值?

mysql - 跟踪谁在数据库中收到/未收到帖子的最佳方法?

php - laravel 中的 groupBy 与 Eloquent 关系

python - Django:在最大外键值上选择不同的值

sql - 如何使用新分区将数据从 TableA 复制到 TableB?

mysql - 将查询结果导出为 csv 文件,并在 mysql 中使用内连接

database - 在多个服务器上存储大量图像

sql - 如何在 PostgreSQL 中获取周开始和结束日期字符串?

php - 显示 PHP 表中的最新年份