12
A
回答
32
不,這幾乎總是一個壞主意。
- 將使用更多的空間
- 索引將不會執行,以及
- 你不能做算術
- 數據不是自我證實的,因爲類型
- 自動模式發電機會給你的字符串類型而不是數字
- 總計像SUM將不再工作
- 輸出可能會錯誤地排序
- 你需要轉換到使用它作爲一個數字,導致性能命中
- 等
0
您將無法使用聲明爲varchar的列進行計算,因此應使用數字類型。既然你的SQL查詢是一個字符串,MySQL會爲你做所有的轉換(當然,這並不意味着你不需要驗證用戶提供的值)。
1
我覺得是OK鍵存儲號碼爲varchar,只要你不想做Calcs(計算)與它。
例如,電話號碼或郵政編碼將更好地存儲在varchar字段中,因爲您可以格式化它們。
3
您可以將前導零存儲到varchar中,但不能使用整數列(例如,123
和0000123
之間可能有差異)。例如一些國家的郵政編碼。但是,如果您需要這樣做,那麼您實際上正在處理應具有varchar列的文本信息。例如,電話號碼或郵政編碼一定要轉到varchar列。否則,如果你使用數據像數字(將它們加在一起,比較它們等),那麼你應該把它放到整數列中。它們佔用的空間少得多,使用起來更快。
+0
領先的零問題也可能是一個缺點。最近我遇到了一個項目的情況,由於Java代碼如何處理它,一個表的前導零爲零,另一個表沒有。這使得在本專欄中加入更加困難。數據是一個數字,所以應該可能被存儲爲這樣的數據而不是varchar。 – xdhmoore 2013-03-11 15:50:44
相關問題
- 1. PostgreSql將值存儲爲整數與varchar
- 2. 將varchar轉換爲數字
- 3. Oracle,將varchar轉換爲數字
- 4. Oracle。將varchar值「40.00」轉換爲數字
- 5. 將varchar轉換爲數字時出錯
- 6. 存儲爲varchar/rfc822的排序日期
- 7. MATLAB將字符串存儲爲數組
- 8. Oracle:將「5」作爲數字存儲
- 9. C#:將字節數組存儲爲XML
- 10. Oracle將Varchar字段轉換爲數字如何將其轉換回Varchar
- 11. SQL:datetime或VARCHAR作爲參數數據類型存儲過程
- 12. 如何將GETDATE()存儲在varchar中,但作爲日期時間?
- 13. SQL Server存儲過程將varchar轉換爲int
- 14. 存儲過程return varchar(MAX)
- 15. 存儲過程返回varchar
- 16. 如何存儲varchar索引?
- 17. 存儲過程返回varchar
- 18. 將數字存儲到MySQL
- 19. c# - excel - 如何將數字變量存儲爲數字字段
- 20. 將數值轉換爲Varchar
- 21. 將varchar轉換爲整數
- 22. 按varchar字段存儲整數值排序表
- 23. 轉換成VARCHAR在數字SQL Server存儲過程
- 24. 數據庫中的VARCHAR字段,其存儲的GPS位置
- 25. 使用存儲過程將數據插入到varchar字段的問題
- 26. 存儲和索引varchar列,其中大部分值將是數字
- 27. 將時間保存到varchar字段
- 28. 如何將存儲爲varchar的小數增加到最近的比例?
- 29. SQL存儲過程將數據類型varchar轉換爲bigint時出錯
- 30. sql server存儲過程使用varchar max作爲參數
我會將諸如電話號碼之類的東西存儲起來,並且只將電話號碼等內容存儲爲varchar,因爲它們並不是真正的數字。你不會在電話號碼上做數學。但是,當決定數據類型的字段時,應始終默認使用通過varchar的數字類型,除非您可以認爲不是一個好的理由,因爲從varchar到numeric的方法比其他方法困難得多。 – GordonM 2011-03-04 12:57:43