varchar和varchar2還有char的區別

2021-09-02 08:02:23 字數 1285 閱讀 6831

--varchar,varchar2

聯絡:1.varchar/varchar2用於儲存可變長度的字串

比如varchar(20),存入字串'abc',則資料庫中該字段只佔3個位元組,而不是20個位元組

2.size 的最大值是 4000,而最小值是 1,其值表示位元組數,比如

varchar(20)表示最大可以存放20個位元組的內容

區別:1.varchar2把所有字元都佔兩位元組處理(一般情況下),varchar只對漢字和全形等字元佔兩位元組,數字,英文本元等都是乙個位元組;

2.varchar2把空串等同於null處理,而varchar仍按照空串處理;

3.varchar2字元要用幾個位元組儲存,要看資料庫使用的字符集,

比如gbk,漢字就會佔兩個位元組,英文1個

如果是utf-8,漢字一般佔3個位元組,英文還是1個。 

但是一般情況下,我們都認為是兩個位元組處理,因為oracle安裝時候預設我們都選擇gbk的編碼格式,但是我們在頁面做輸入字串長度的校驗的時候,還是以資料庫設計字段最大長度除3來作為最大長度-----防止資料庫移植時設定不同編碼格式;

比如:varchar2(10),一般情況下最多存放5個漢字,10個字元

varchar、varchar2、char的區別    

1.char的長度是固定的,而varchar2的長度是可以變化的,

比如,儲存字串「abc",對於char (20),表示你儲存的字元將佔20個位元組(包括17個空字元),而同樣的varchar2 (20)則只占用3個位元組的長度,

20只是最大值,當你儲存的字元小於20時,按實際長度儲存。    

2.char的效率比varchar2的效率稍高。    

3.目前varchar是varchar2的同義詞。工業標準的varchar型別可以儲存空字串,但是oracle不這樣做,儘管它保留以後這樣做的權利。oracle自己開發了乙個資料型別varchar2,這個型別不是乙個標準的varchar,它將在資料庫中varchar列可以儲存空字串的特性改為儲存null值。如果你想有向後相容的能力,oracle建議使用varchar2而不是varchar。

4.varchar2比char節省空間,在效率上比char會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在資料庫設計上常說的『以空間換效率』。    

varchar2雖然比char節省空間,但是如果乙個varchar2列經常被修改,而且每次被修改的資料的長度不同,這會引起『行遷移』(row migration)現象,而這造成多餘的i/o,是資料庫設計和調整中要盡力避免的,在這種情況下用char代替varchar2會更好一些。

char和varchar2 varchar的區別

char和varchar2 varchar的區別 1 char是長度固定的型別,varchar2是動態變化的,譬如 存在字串 abcde 對於乙個大小為char 20 而言,它將儲存20個字元,但是有15個是空字元,而varchar 20 則是占用3個位元組的長度,20只是能儲存的最大值。2 cha...

varchar和varchar2的區別

varchar是標準sql裡面的。varchar2是oracle提供的獨有的資料型別。varchar對於漢字佔兩個位元組,對於英文是乙個位元組,佔的記憶體小,varchar2都是佔兩個位元組。varchar對空串不處理,varchar2將空串當做null來處理。varchar存放固定長度的字串,最大...

varchar和varchar2的區別

varchar是標準sql裡面的。varchar2是oracle提供的獨有的資料型別。varchar對於漢字佔兩個位元組,對於數字,英文本元是乙個位元組,佔的記憶體小,varchar2一般情況下把所有字元都佔兩位元組處理。具體要看資料庫使用的字符集,比如gbk,漢字就會佔兩個位元組,英文1個,如果是...