我想在MySQL數據庫中存儲郵政編碼(在美國境內)。 保存空間是重中之重。這是使用VARCHAR的更好選擇 - 限制爲最大長度爲6位或使用INT或使用MEDIUM Int。郵政編碼不會用於任何計算。郵政編碼將用於插入(一次),更新(如果需要)和檢索 - 一次(但可以多次)。什麼是美國郵政編碼的最佳列類型?
哪個更適合在這裏使用VARCHAR或INT或MEDIUM IN MYSQL?請提出其他建議嗎?
我想在MySQL數據庫中存儲郵政編碼(在美國境內)。 保存空間是重中之重。這是使用VARCHAR的更好選擇 - 限制爲最大長度爲6位或使用INT或使用MEDIUM Int。郵政編碼不會用於任何計算。郵政編碼將用於插入(一次),更新(如果需要)和檢索 - 一次(但可以多次)。什麼是美國郵政編碼的最佳列類型?
哪個更適合在這裏使用VARCHAR或INT或MEDIUM IN MYSQL?請提出其他建議嗎?
將郵政編碼作爲數字值存儲時存在一些問題。
12345-6789
。您不能在數字數據類型中存儲短劃線。我會存儲一個郵政編碼爲varchar(5)
或varchar(10)
。
作爲便箋,我不確定爲什麼你會選擇varchar(6)
,當標準郵政編碼爲5或10時,您是否有理由選擇不尋常的長度?
我通常使用MEDIUMINT(5) ZEROFILL
代替5位數的郵政編碼。這保留了任何領先的0
s,並且它只使用3個字節,其中VARCHAR(5)
將使用6。這假定您不需要擴展郵政編碼,其具有短劃線和4個額外數字。如果您決定使用文本類型,我會使用CHAR(5)
而不是VARCHAR(5)
,因爲如果數據總是5個字符長,則更好。
郵政編碼總是5個字符,因此您需要一個CHAR數據類型,而不是VARCHAR。
選項有因此
CHAR(5)
MEDIUMINT (5) UNSIGNED ZEROFILL
第一取每郵政編碼5個字節。
第二個每個郵政編碼只需要3個字節。 ZEROFILL選項對於帶有前導零的郵政編碼是必需的。
因此,如果空間是您的首選,請使用MEDIUMINT。
我會建議,使用VARCHAR數據類型,因爲在一些國家,郵政編碼用作字母數字和其他地方作爲整數。所以我們不能使用整數用於全局使用。此外,郵政編碼可能從零開始,如001101
,所以在這種情況下,如果我們採用數據類型整數,則導致零將丟失,因此我們無法傳遞實際的郵政編碼。
可能重複[在數據庫中使用整數列來存儲美國郵政編碼是個好主意嗎?](http://stackoverflow.com/questions/893454/is-it-a-good-idea-使用的安整數列換存儲-US-拉鍊碼-IN-A-databas) – Taryn 2013-04-05 21:25:23