mysql中cahr(20)、varchar(20)中定義的長度到底是字符長度還是字節長度?

轉載來源:https://blog.csdn.net/xiaoyu19910321/article/details/52325090

1.我們經常 mysql創建 varchar(20)  name這個 20長度 究竟是表示的字符數還是字節數?根編碼字符集又有沒有關係?

首先 mysql 5.X 以上的版本的 定義中 表示的字符長度,如上:varchar(20)你既可以添加20個英文字符,也可以添加二十個中文字符即表示的是字符長度。

mysql 4.X 的版本表示的是字節長度,會根據字符集轉變 內容字節長度存儲。

對於char(10)同上。

2.關於 int(2) 中的2  ,表示的並非是int類型只能輸入2位數字,而是隻能顯示2位數字範圍,可以添加11位的int的任何數字。

3.mysql 5.X以上版本  存儲時 char最大255字節,這個和字符集是否有關係

本人測試沒有關係,字符集是GBK或者UTF-8在char(255)下都可已添加255個字符(字母或者漢字或者都有)。
但是對於varchar類型:

參考:https://blog.csdn.net/guanmaoning/article/details/106663446

utf-8狀態下,漢字最多可以存 21844個字符串, 英文也爲 21844個字符串 (雖然一個英文字符實際佔用一個字節,但是utf-8定義字段時是默認以每個字符最大爲3個字節來進行計算的,所以最大爲varchar(21844))。

gbk狀態下,漢字最多可以存 32766個字符串,英文也爲 32766個字符串(雖然一個英文字符實際佔用一個字節,但是gbk定義字段時是默認以每個字符最大爲2個字節來進行計算的,所以最大爲varchar(32766))。

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