2014-11-06 172 views
0

我已經存儲手機/手機號碼與國家代碼在MySQL表中。因爲這兩個字段都使用了十進制數據類型(例如dialcode decimal(5,0),mobileno decimal(20,0))。我的mobileno和撥號代碼或國家代碼必須是數字。現在我將使用varchar(5)對dial-code和varchar(20)對mobileno進行更改。mysql - mobileno的數據類型。十進制與varchar

性能可以嗎?有人可以告訴我mobileno(任何國家)的最大長度是多少?並且如果像flote或integer這樣的其他數據類型對於上述情況會更可取?如果是的話,那爲什麼?

謝謝。

回答

1

此問題存在要求意見的風險。不過,我認爲它有一個「正確」或至少「更好」的答案。

當您存儲數字時,您應該使用數字類型。數字具有被排序的屬性並能夠對它們進行算術運算。很多東西都存儲爲沒有這些屬性的數字 - 請考慮信用卡號,郵政編碼和FIP代碼。電話號碼也屬於這個類別。

一個重要的考慮因素是領先的0是否重要。對於實際數字,這些並不重要。對於碰巧使用數字的代碼,它們很重要。

所以,我建議你將值存儲爲字符串。我不知道最長的電話號碼是什麼,但我不希望我的數據庫依賴於今天的最大值。只要使用類似varchar(255),這應該是綽綽有餘了很長一段時間。

相關問題