回答
首先,它不需要它在所有數據庫中。看看SQL Server,它是可選的。
無論如何,它定義了字段內容的最大大小。它本身並不是一件壞事,它表達了意義(例如 - 電話號碼,在這個領域你不需要國際號碼)。
確實,在未定義SQL Server中的大小時要小心,因爲根據場景的不同,默認情況會有所不同。 http://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html – AdaTheDev 2010-07-01 10:19:00
「當在數據定義或變量聲明語句中未指定n時,默認長度爲1 。當使用CAST和CONVERT函數時未指定n時,默認長度爲30.「從提到的鏈接 – 2018-01-31 12:45:16
VARCHAR字段可以是任何規模達 發揮到極致。該限制從 類型的數據庫不同,在Oracle 9i中 的數據庫有4000個字節的限制,一個 MySQL數據庫爲65,535 字節的限制(整行)和 微軟SQL Server 2005的8000個字節 (除非VARCHAR (max),其中 具有最大存儲容量 2,147,483,648字節)。
VARCHAR的「長度」不是內容的長度,而是內容的最大長度。
VARCHAR的最大長度不是動態的,它是固定的,因此必須指定。
如果您不想爲其定義最大大小,請使用VARCHAR(MAX)。
爲什麼VARCHAR在默認情況下表示VARCHAR(MAX)? INT具有默認大小,所以爲什麼VARCHAR不能具有默認大小?當創建SQL標準時,這個設計決定背後的原因是什麼? – Fixpoint 2010-07-02 08:08:26
當創建SQL Server標準時,VARCHAR(MAX)不存在。它是varchar(8000)或文本。 – 2010-07-02 08:31:52
VARCHAR(MAX)的處理方式與VARCHAR(8000)(最大的非最大類型)不同。請僅在需要時使用VARCHAR(MAX),否則性能將受損。 https://dba.stackexchange.com/questions/173895/understanding-varcharmax-8000-column-and-why-i-can-store-more-than-8000-charac – bobroxsox 2017-09-18 20:55:05
數據庫對其存儲的數據瞭解得越多,在使用請求搜索/添加/更新數據時,可以進行的優化越多。
它可以根據varchar max進行哪些優化長度,例如? – Fixpoint 2010-07-01 11:12:52
答案是你不需要需要,它是可選的。
如果你想確保字符串不超過一定的長度,它就在那裏。
您可以將其視爲數據的約束條件。它確保您不會存儲違反約束條件的數據。它在概念上類似於例如對整數列進行檢查約束,確保只輸入正值。
有可能的性能impact
:在MySQL,temporary tables
和MEMORY tables
商店VARCHAR
柱爲固定長度列,填補了它的最大長度。
如果你設計的VARCHAR
列比你需要的最大尺寸大得多,你會消耗更多的內存。這會影響cache efficiency, sorting speed
等。
因此,您給出了字符串下的最大長度。就像如果你最大長度的字符10,所以不要給他的長度100或更多。
- 1. 爲什麼需要指定表中的列長度
- 2. 爲什麼`accept(2)`需要'sockaddr`長度作爲單獨的指針?
- 3. 爲什麼不將每個VARCHAR指定爲VARCHAR(65535)?
- 4. 當所需長度<8000時,TEXT對varchar有什麼優勢?
- 5. 爲什麼munmap需要長度作爲參數?
- 6. 爲什麼不能我設置的varchar爲1000的長度
- 7. 爲什麼IIS7需要很長時間
- 8. 爲什麼cufftPlanMany()需要太長時間?
- 9. XmlSerializer.Serialize需要很長時間...爲什麼?
- 10. 爲什麼我們需要長型?
- 11. 爲什麼Integral約束需要從整體調用長度?
- 12. 爲什麼十六進制浮點數需要指定指數?
- 13. pkcs11-tool:爲什麼我需要指定要加載的模塊?
- 14. 使用CAST時,爲什麼30是VARCHAR的默認長度?
- 15. MySQL確定最長的VarChar長度
- 16. 爲什麼我需要遮罩指令?
- 17. 爲什麼我需要爲f.readlines()指定一個變量以獲得它的長度?
- 18. 爲什麼在android中定義paddingLeft時需要指定paddingRight?
- 19. 爲什麼Observable.FromEventPattern需要調度程序?
- 20. MySQL表中varchar長度的重要性
- 21. 爲什麼指定自動增量ID的長度
- 22. 爲什麼指定字符變化類型的長度
- 23. !重要的是需要指定寬度
- 24. 爲什麼長度未定義?
- 25. 需要的長度(411) - RESTlet客戶端需要的長度
- 26. 在MySQL中,爲什麼varchar需要大小和文本不?
- 27. 爲什麼你需要指定一個html表格寬度和列寬
- 28. 爲什麼在Tensorflow中指定模型時需要考慮批量維度?
- 29. BLOB/TEXT列需要它的長度指定
- 30. 爲什麼需要
可能的重複http://stackoverflow.com/questions/2241238/why-does-oracle-varchar2-have-a-mandatory-size-as-a-definition-parameter/2244926#2244926 – 2010-07-01 11:34:17
謝謝,這個真的是重複的。 – Fixpoint 2010-07-02 08:11:15