在列中向某些值添加前导零

我有一个csv文件发送给我在csv。 感兴趣的领域是8位数字。 其中一些以0开始。该字段被发送数字。 所以,我现在已经放弃了一些领先的零。

我已经将该字段转换为varchar。 我现在需要做到这一点:

我现在有这个:

12345678
1234567

我需要这个:

12345678
01234567

我正在使用MySQL。

谢谢

将字段更改为数字并使用ZEROFILL保留零

要么

使用LPAD()

 SELECT LPAD('1234567', 8, '0'); 

可能是:

 select lpad(column, 8, 0) from table; 

针对mylesg的问题编辑 ,在下面的评论中:

好吧,似乎在查询上作出了改变 – 但我怎么让它坚持(改变它)永久在表中? 我尝试了一个更新,而不是select

我假设你使用了一个类似于下面的查询:

 UPDATE table SET columnName=lpad(nums,8,0); 

如果这是成功的,但表的值仍然没有前导零,那么我build议你可能将列设置为数字types? 如果是这种情况,那么你需要改变表格,以便该列是文本/ varchar()types,以保留前导零:

第一:

 ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8); 

其次,运行更新:

 UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0'); 

这应该保持领先于零; 不利的一面是该列不再是严格的数字types; 因此您可能必须执行更严格的validation(取决于您的使用情况),以确保非数字不会input到该列中。

参考文献:

  • lpad()