2015-01-31 51 views
1

我已经尝试了几个解决方案,但没有一个似乎工作。我有一个邮政编码栏,这INT(10)向mySQL列添加前导零

我需要将其转换(以VARCHAR,我猜),以便可以存储具有前导零的邮政编码。现在他们是“8721”而不是“08721”。

我尝试这样做:

SELECT RIGHT('0000'+ CONVERT(VARCHAR,zip_code),5) AS NUM FROM p23data; 

,但我得到一个错误:

check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR,zip_code),5) AS NUM FROM p23data' at line 1

我觉得上面的是创建一个新列,但我只需要更新现有zip_code柱。

我不在这里干什么?

回答

6

LPAD将处理前导零:

ALTER TABLE p23data CHANGE zip_code zip_code CHAR(5); 
UPDATE p23data SET zip_code = LPAD(zip_code, 5, '0'); 
+0

因此,这是否更新我的zip_code列或添加一个新的(或其他) ? – jonmrich 2015-01-31 22:16:07

+0

只选择现有的整数数据,但用前导零格式化。 – 2015-01-31 22:17:25

+0

如何使用新格式化的数字更新我的zip_code列? – jonmrich 2015-01-31 22:18:45

-1

邮政编码不是INT ......它们是恰好由字符09组成的五个(或九个或十一个)字符串。

+0

我知道,但是这是他们如何储存,所以现在我需要解决这个问题。 – jonmrich 2015-01-31 22:12:22

+0

啊,呃。从你的措辞中不清楚你没有控制那个......也许在那里抛出“来自现有数据库”?与此同时,我的答案是准确的,所以不应该得到一个downvote(如果它没有帮助,这是一个novote不downvote) – 2015-02-01 00:01:56