在列中向某些值添加前导零
我有一个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()
。