4 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
1.varchar2把所有字符都占兩字節(jié)處理(一般情況下),varchar只對漢字和全角等字符占兩字節(jié),數(shù)字,英文字符等都是一個字節(jié);
2.VARCHAR2把空串等同于null處理,而varchar仍按照空串處理;
3.VARCHAR2字符要用幾個字節(jié)存儲,要看數(shù)據(jù)庫使用的字符集,
大部分情況下建議使用varchar2類型,可以保證更好的兼容性。

TA貢獻1817條經(jīng)驗 獲得超14個贊
CHAR char數(shù)據(jù)類型存儲固定長度的字符值。一個CHAR數(shù)據(jù)類型可以包括1到2000個字符。如果對CHAR沒有明確地說明長度,它的默認長度則設(shè)置為1。如果對某個CHAR類型變量賦值,其長度小于規(guī)定的長度,那么Oracle自動用空格填充。 VARCHAR2 存儲可變長度的字符串。雖然也必須指定一個VARCHAR2數(shù)據(jù)變量的長度,但是這個長度是指對該變量賦值的最大長度而非實際賦值長度。不需用空格填充。最多可設(shè)置為4000個字符。因為VARCHAR2數(shù)據(jù)類型只存儲為該列所賦的字符(不加空格),所以VARCHAR2需要的存儲空間比CHAR數(shù)據(jù)類型要小。

TA貢獻1807條經(jīng)驗 獲得超9個贊
聯(lián)系:
1.varchar/varchar2用于存儲可變長度的字符串
比如varchar(20),存入字符串'abc',則數(shù)據(jù)庫中該字段只占3個字節(jié),而不是20個字節(jié)
2.size 的最大值是 4000,而最小值是 1,其值表示字節(jié)數(shù),比如
varchar(20)表示最大可以存放20個字節(jié)的內(nèi)容
區(qū)別:
1.varchar2把所有字符都占兩字節(jié)處理(一般情況下),varchar只對漢字和全角等字符占兩字節(jié),數(shù)字,英文字符等都是一個字節(jié);
2.VARCHAR2把空串等同于null處理,而varchar仍按照空串處理;
3.VARCHAR2字符要用幾個字節(jié)存儲,要看數(shù)據(jù)庫使用的字符集,
比如GBK,漢字就會占兩個字節(jié),英文1個
如果是UTF-8,漢字一般占3個字節(jié),英文還是1個。
但是一般情況下,我們都認為是兩個字節(jié)處理,因為oracle安裝時候默認我們都選擇GBK的編碼格式,但是我們在頁面做輸入字符串長度的校驗的時候,還是以數(shù)據(jù)庫設(shè)計字段最大長度除3來作為最大長度-----防止數(shù)據(jù)庫移植時設(shè)置不同編碼格式;
比如:VARCHAR2(10),一般情況下最多存放5個漢字,10個字符
- 4 回答
- 0 關(guān)注
- 617 瀏覽
添加回答
舉報