varchar長度是字符還是字節(jié) MySQL的varchar定義長度是字節(jié)還是字符?
MySQL的varchar定義長度是字節(jié)還是字符?MySQL的varchar定義的長度是字節(jié)。Varchar存儲規(guī)則:在4.0以下,Varchar(20)表示20字節(jié)。如果存儲utf8漢字,則在5.0
MySQL的varchar定義長度是字節(jié)還是字符?
MySQL的varchar定義的長度是字節(jié)。Varchar存儲規(guī)則:在4.0以下,Varchar(20)表示20字節(jié)。如果存儲utf8漢字,則在5.0版上只能存儲6個字符(每個漢字3個字節(jié)),varchar(20)表示20個字符。無論是存儲數(shù)字、字母還是utf8漢字(每個漢字3個字節(jié)),都可以存儲20個字符。最大大小為65532字節(jié),MySQL4中的最大大小只有20字節(jié)。然而,mysql5根據不同的代碼有不同的存儲大小。
char int varchar占用幾個字節(jié)?
1. 首先,很明顯char的長度是不可變的,而varchar的長度是可變的。也就是說,定義char[10]和varchar[10]。如果保存了“CSDN”,則char的長度仍然是10。除字符“CSDN”外,后面還有六個空格。Varchar立即將長度更改為4。在獲取數(shù)據時,char type的長度為0,以消除trim()的多余空間,不需要varchar。
2. 即便如此,char的訪問次數(shù)也比varchar快得多,因為它的長度是固定的,便于程序的存儲和搜索;但是char也要付出空間的代價,因為它的長度是固定的,所以難免會有多余的空間占位符來占用空間??梢哉f,空間是時間效率的交換,varchar把空間效率放在首位。
3. 此外,char對于英文字符(ASCII)占用一個字節(jié),對于中文字符占用兩個字節(jié);而varchar對于每個英文字符占用兩個字節(jié),對于中文字符占用兩個字節(jié)。
兩者的存儲數(shù)據都不是Unicode字符數(shù)據。