2015-01-31 85 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