2010-04-23 81 views
1

當你使用Varchar(max)時,變量爲8000字符,列爲2^32左右,COLLATE是什麼以及它如何影響它?T-sql COLLATE和Varchar(max)

感謝

+1

VARCHAR(MAX)**總是**高達2GB的數據......您在哪裏讀取的變量只有8000個字符? – 2010-04-25 08:54:19

回答

3

整理deterines SQL Server如何排序和字符串數據進行比較(其中varchar變量和列值)。

here

1

在聲明欄或varchar(max)一個變量,它可能需要多達2 GB數據和2^31-1字符。如果將列或變量聲明爲nvarchar,則由於每個字符佔用兩倍的空間,所以它仍然只能使用2 GB數據和(2^31-1)/ 2個字符。在不使用COLLATE子句的情況下聲明varchar列或變量時,將使用數據庫的歸類。 COLLATE子句不影響列或變量的容量。

+0

不準確退出 http://msdn.microsoft.com/en-us/library/ms176089%28SQL.90%29.aspx – Tony 2010-04-23 18:50:18

+0

你聲稱是不是準確的? varchar和nvarchar具有相同的最大空間。 (忽略額外的2個字節)。由於nvarchar佔用了兩倍的空間,因此可以獲得一半的字符(但最大空間總數相同)。 – Thomas 2010-04-23 19:38:44

+0

@Tony - 無論排序規則如何,您仍然只能獲得2 GB的存儲空間。轉換後的字符數可以在排序規則上更改,但通常情況下,varchar中的每個字符在nvarchar中每個字符佔用一個字節,每個字符佔用兩個字節。 – Thomas 2010-04-23 19:42:16