2012-01-17 85 views

回答

7

sys.columns的長度數據類型是smallint,而varchar(max)的最大長度是21億,所以它有一個保存實際長度的問題。 -1在文檔中用於表示varchar(max),varbinary(max),nvarchar(max)和xml。

http://msdn.microsoft.com/en-us/library/ms176106(v=sql.100).aspx

如果你真的需要的數量,那麼你就需要一個case語句來代替-1,(2^31)-1

如果你想獲得物理數據的長度,那麼您需要根據您需要的信息,在表上使用其中的數據對錶格上的最大/最小/平均長度進行平均。當查詢字段的長度時,DATALENGTH返回使用的字節數,LEN返回字符數。

0

如所見HERE

可變長度,非Unicode字符數據。 n可以是從1到8,000的值。 max表示最大存儲大小爲2^31-1字節。存儲大小是輸入的數據的實際長度+ 2個字節。輸入的數據長度可以是0個字符。 varchar的ISO同義詞是char變量或字符變量。


換言之,最大= 2147483647個字節如果所有可能的空間被佔用..

0

每一行可以改變在塔的長度。因此-1的結果-1

+1

原創解讀:)。但是對於任何VAR類型也可以這樣說,比如VARCHAR(100):每行的長度可以在0和100之間變化。然而長度是100,而不是-1。 -1真的意味着MAX類型,是一種慣例。 – 2012-01-17 18:02:47

5

-1意味着該列的類型爲max。根據文檔,最大長度是max類型。 MAX類型具有2GB的最大長度,如果沒有指定FILESTREAM屬性,或最大尺寸僅由disk size available限於:

所述的BLOB的大小僅由文件 系統的體積大小的限制。 2GB文件大小的標準varbinary(max)限制 不適用於存儲在文件系統中的BLOB。

因此你的問題真的沒有答案。您可以使用DATALENGTH詢問表中任何實際值的實際大小。

+0

+1 - 忘記文件流的長度 – Andrew 2012-01-17 18:55:52