2016-02-23 44 views
1

我一直在使用MySQL,非常隱約瞭解VARCHAR(This Number Here)部分。這個數字是該列可存儲的字符總數嗎?varchar(限制)如何工作?

例如,假設我有一個VARCHAR(400) latin1_general_ci,400是指400字節的字符串限制還是字符串可以有400個字符?我可以在該列變量中存儲多大的字符串?

+2

它是字符的限制,而不是字節的限制;用「更大」字符集編碼的字符串佔用更多空間。如果您運行類似於「SELECT * FROM information_schema.columns」的查詢,這會變得很明顯。 – Uueerdo

回答

1

這是該領域的最大字符串長度(見here)(而不是字節):

CHARVARCHAR類型聲明的長度表示要存儲的最大字符數。例如,CHAR(30)最多可以容納30個字符。

這將允許30個字符而不管編碼。

VARCHAR中的值是可變長度字符串。長度可以指定爲0到65,535之間的值。 VARCHAR的有效最大長度受制於最大行大小(65,535字節,在所有列中共享)和使用的字符集。

CHAR,VARCHAR相反,值存儲爲1字節或2字節長度的前綴加上數據。長度前綴表示該值中的字節數。 A柱使用一個長度字節的值,如果不需要超過255字節,2個字節長度值是否可能需要多於255個字節。