我在我的郵政編碼表中有一列。一些郵政編碼從0開始就被截斷。例如,00123顯示爲123,04567顯示爲04567.如何將前導0添加到mysql中的字符串中?
是否有一個函數可用於更新列的所有條目,以便如果長度的字符串是3,數字前面會有0的位置使其長度爲5? (即123 - > 0 4567 - > 04567)
我在我的郵政編碼表中有一列。一些郵政編碼從0開始就被截斷。例如,00123顯示爲123,04567顯示爲04567.如何將前導0添加到mysql中的字符串中?
是否有一個函數可用於更新列的所有條目,以便如果長度的字符串是3,數字前面會有0的位置使其長度爲5? (即123 - > 0 4567 - > 04567)
使您的郵政編碼字段成爲文本類型字段之一。問題解決了。這在你考慮它時很有意義,因爲你不太可能對這些數據進行任何數學計算。另外,如果您需要爲具有非數字郵政編碼值的國家/地區提供服務,則此功能更加靈活。
創建或更改領域ZEROFILL和長度設置爲
CREATE TABLE `abc` (
`zip` int(5) unsigned zerofill DEFAULT NULL,
`b` int(11)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果列已經是一個字符串類型,你可以使用LPAD
添加領先的字符串:
update table set zipcode = LPAD(zipCode, 5, '0');
如果它是一個數字數據類型,將該列更改爲使用ZEROFILL
,然後按照上述操作。請注意,這會自動使您的列無符號。
嘗試UPDATE Table SET zipCode = LPAD(zipCode, 5, '0');
這將前導零填充數據。希望有所幫助!
可能重複的[用零填充mysql INT字段的開頭](http://stackoverflow.com/questions/5191494/padding-the-beginning-of-a-mysql-int-field-with-zeroes ) – bancer
我重新打開了這個標記爲處理顯示時間填充而不是存儲的副本 –
由於您沒有提供該列的**數據類型**,因此不清楚您所要求的內容。如果它是* integer *類型(例如INT),那麼前導零將永遠不會被「存儲」。如果你把整列留出來,你需要填充0(或者指定zerofill屬性,或者在SELECT語句中使用表達式來代替列名,如果是字符類型,那麼你可以修改列使用'UPDATE'語句,使用引用當前值的表達式。 – spencer7593