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. 將varchar轉換爲數字
- 4. DB2 VARCHAR Unicode數據存儲
- 5. 訂購VARCHAR存儲爲數字出現誤導輸出
- 6. 是否存在將IP存儲爲Varchar的任何缺點
- 7. 將十進制存儲爲varchar轉換爲datetime
- 8. 數據庫 - 將數值存儲在VARCHAR數據類型中
- 9. Mysql ORDER BY varchar列存儲爲
- 10. 按時間順序存儲爲Varchar
- 11. MySQL - 存儲在varchar長度爲1000
- 12. 存儲爲varchar/rfc822的排序日期
- 13. JPQL:將varchar轉換爲數字
- 14. Oracle。將varchar值「40.00」轉換爲數字
- 15. Oracle,將varchar轉換爲數字
- 16. 將VARCHAR轉換爲數字SQL Server
- 17. 將varchar轉換爲數字時出錯
- 18. 如何將uuid存儲爲數字?
- 19. Oracle:將「5」作爲數字存儲
- 20. MATLAB將字符串存儲爲數組
- 21. C#:將字節數組存儲爲XML
- 22. Oracle將Varchar字段轉換爲數字如何將其轉換回Varchar
- 23. 將存儲爲文本的數字轉換爲數字?
- 24. SQL:datetime或VARCHAR作爲參數數據類型存儲過程
- 25. mysql varchar(255)只能存儲多達4位小數的數字,爲什麼?
- 26. SQL Server存儲過程將varchar轉換爲int
- 27. 如何將GETDATE()存儲在varchar中,但作爲日期時間?
- 28. 將圖像存儲爲base64string(varchar(max))或varbinary
- 29. 在SQLite中將「String」存儲爲「TEXT」而不是「VarChar」 - WP8
- 30. 爲什麼字符串不能與存儲的varchar相等?
我會將諸如電話號碼之類的東西存儲起來,並且只將電話號碼等內容存儲爲varchar,因爲它們並不是真正的數字。你不會在電話號碼上做數學。但是,當決定數據類型的字段時,應始終默認使用通過varchar的數字類型,除非您可以認爲不是一個好的理由,因爲從varchar到numeric的方法比其他方法困難得多。 – GordonM 2011-03-04 12:57:43