2010-06-09 72 views

回答

32

不,這幾乎總是一個壞主意。

  • 將使用更多的空間
  • 索引將不會執行,以及
  • 你不能做算術
  • 數據不是自我證實的,因爲類型
  • 自動模式發電機會給你的字符串類型而不是數字
  • 總計像SUM將不再工作
  • 輸出可能會錯誤地排序
  • 你需要轉換到使用它作爲一個數字,導致性能命中
0

您將無法使用聲明爲varchar的列進行計算,因此應使用數字類型。既然你的SQL查詢是一個字符串,MySQL會爲你做所有的轉換(當然,這並不意味着你不需要驗證用戶提供的值)。

1

我覺得是OK鍵存儲號碼爲varchar,只要你不想做Calcs(計算)與它。

例如,電話號碼或郵政編碼將更好地存儲在varchar字段中,因爲您可以格式化它們。

+0

我會將諸如電話號碼之類的東西存儲起來,並且只將電話號碼等內容存儲爲varchar,因爲它們並不是真正的數字。你不會在電話號碼上做數學。但是,當決定數據類型的字段時,應始終默認使用通過varchar的數字類型,除非您可以認爲不是一個好的理由,因爲從varchar到numeric的方法比其他方法困難得多。 – GordonM 2011-03-04 12:57:43

3

您可以將前導零存儲到varchar中,但不能使用整數列(例如,1230000123之間可能有差異)。例如一些國家的郵政編碼。但是,如果您需要這樣做,那麼您實際上正在處理應具有varchar列的文本信息。例如,電話號碼或郵政編碼一定要轉到varchar列。否則,如果你使用數據像數字(將它們加在一起,比較它們等),那麼你應該把它放到整數列中。它們佔用的空間少得多,使用起來更快。

+0

領先的零問題也可能是一個缺點。最近我遇到了一個項目的情況,由於Java代碼如何處理它,一個表的前導零爲零,另一個表沒有。這使得在本專欄中加入更加困難。數據是一個數字,所以應該可能被存儲爲這樣的數據而不是varchar。 – xdhmoore 2013-03-11 15:50:44