4 回答

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

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

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