2010-04-26 79 views
4

我有一個MySQL數據庫,我想在其他地方存儲電話號碼。MySQL 5.1.41前導零被刪除

的字段類型爲int(10)

當我嘗試插入0開頭的數字,像0504042858它的存儲像504042858.這僅適用於帶前導零的電話號碼發生。當號碼從任何其他號碼開始時,它被正確存儲。

我在做什麼錯?

回答

5

您應該將電話號碼存儲爲varchar。電話號碼只是偶然的數字。

您還可能有興趣在檢查出下面的堆棧溢出職位:

+0

嗨,感謝您的快速回復。我想知道是否將字符串存儲爲字符串並不是不好的做法。還有,爲什麼MySQL會刪除我的0而不詢問它? – iggnition 2010-04-26 07:40:26

+1

這不是刪除它。 0504在數字方面是504 ......另外,我想說將它們存儲爲'varchar'實際上是一種好的做法。 – 2010-04-26 07:41:45

+0

因爲整數沒有前導零,01,0001和1仍然是相同的數字,1. – nos 2010-04-26 07:42:01

1

,因爲數學上它們是同它去掉前導零和去除領先的零是一個快速存儲優化。此外,它還使得數字更容易閱讀,想象一個以幾百個數字列填充幾個前導零的數字。

我同意Daniel將你的列更改爲varchar。

2

您可以給長度INT(11)具有屬性值UNSIGNED_ZEROFILL。它將填充全部11個數字,並且如果任何數字長度小於11,則它將在該值之前本身增加零。 這可能會解決您的問題。