MySQL 中 varchar 的長度

1. varchar(n) 的最大值字符數是多少

varchar 最大可以保存 65535 字節,但是具體保存多少個字符,不同的編碼不一樣。

MySQL 5.0 之前的版本:n 指的是 n 個字節

n 的最大值是 65535,如果以 utf-8 格式存放數據,最長保存 [n/3] 個漢字(一個漢字佔 3 字節),即 varchar(20) 類型的字段只能保存 6 個漢字;

MySQL 5.0 之後的版本:n 指的是 n 個字符

無論是數字,字母還是漢字,都可存放 n 個,即 varchar(20) 類型的字段可以保存 20 個漢字;

utf8mb4 格式:varchar(n) 中每個字符最多佔 4 個字節,英文數字佔 1 個字節,漢字佔 3 個字節。

2. varchar(n) 需要 1 到 2 個額外字節記錄保存的字符長度

當 n<=255 的時候,只需要 1 個字節記錄即可(數據表示範圍:0~28-1,即 0~255);當 n>255 的時候,則需要 2 個字節記錄(28~ 216-1,即 256~65535)。

字符的長度保存在第一個或者前兩個字節中。所以(對於 utf8mb4 格式):

a. 如果 varchar(20),實際最多需要 1+20*4 個字節的存儲空間;

b. 如果 varchar(255),實際最多需要 1+255*4 個字節的存儲空間;

c. 如果 varchar(256),實際最多需要 2+256*4 個字節的存儲空間;

d. 如果 varchar(500),實際最多需要 2+500*4 個字節的存儲空間。

因爲 varchar 是存儲可變長字符串,所以:

a. 如果 name varchar(8),那麼 name='12345678',實際長度爲 1+8*1 字節;

b. 如果 name varchar(32),那麼 name='12345678',實際長度爲 1+8*1 字節;

c. 如果 name varchar(16),那麼 name='1234',實際長度爲 1+4*1 字節;

基於 MySQL 中 varchar 長度的設置問題 修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章