我有一个以CSV格式发送给我的CSV文件。感兴趣的字段是8位数字。其中一些以0开头。该字段以数字形式发送。因此,我现在删除了一些前导零。
我已经将该字段转换为varchar。我现在需要这样做:
我现在有这个:
12345678
1234567
我需要这个:
12345678
01234567
Answers:
可能:
select lpad(column, 8, 0) from table;
编辑响应问题从mylesg,在下面的评论:
好的,似乎在查询上进行了更改-但是如何使它永久地保留(更改)在表中?我尝试了UPDATE而不是SELECT
我假设您使用的查询类似于:
UPDATE table SET columnName=lpad(nums,8,0);
如果那成功了,但是表的值仍然没有前导零,那么我建议您将列设置为数字类型?如果是这种情况,那么您需要更改表,以使该列具有text / varchar()类型,以便保留前导零:
第一:
ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);
其次,运行更新:
UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');
然后,这应该保留前导零。缺点是该列不再严格是数字类型;因此您可能必须执行更严格的验证(取决于您的用例),以确保不会在该列中输入非数字。
参考文献:
从Excel导入电话号码数据到mysql数据库时,我遇到了类似的问题。因此,这是一个简单的技巧,无需识别电话号码的长度(因为电话号码的长度在我的数据中有所不同):
UPDATE table SET phone_num = concat('0', phone_num)
我只是在前面掩盖了0 phone_num
。