我的邮政编码表中有一栏。一些邮政编码从0开始就被截断了。例如,00123显示为123,04567显示为04567。
是否有一个函数可以用来更新列的所有条目,这样如果字符串的长度为3,那么在数字前面会有0个位置,使其长度为5? (即123-> 00123& 4567-> 04567)
答案 0 :(得分:2)
如果您的列已经是字符串类型,则可以使用LPAD
添加主要字符串:
update table set zipcode = LPAD(zipCode, 5, '0');
如果是数值数据类型,请将列更改为使用ZEROFILL
,然后执行与上述相同的操作。请注意,这会自动使您的列无符号。
请参阅manual
答案 1 :(得分:1)
将您的邮政编码字段设为文本类型字段之一。问题解决了。当您考虑它时这是有道理的,因为您不太可能对此数据进行任何数学计算。此外,如果您需要使用具有非数字邮政编码值的国家/地区,则此功能更加灵活。
答案 2 :(得分:0)
创建或更改字段以进行zerofill并将长度设置为
CREATE TABLE `abc` (
`zip` int(5) unsigned zerofill DEFAULT NULL,
`b` int(11)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
答案 3 :(得分:0)
尝试UPDATE Table SET zipCode = LPAD(zipCode, 5, '0');
这将使用前导零填充您的数据。希望有所帮助!