您好,登錄后才能下訂單哦!
這篇文章主要講解了“oracle字符與字節(jié)的知識(shí)整理”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“oracle字符與字節(jié)的知識(shí)整理”吧!
術(shù)語(yǔ):
位(bit):是計(jì)算機(jī) 內(nèi)部數(shù)據(jù) 儲(chǔ)存的最小單位,11001100是一個(gè)八位二進(jìn)制數(shù)。
字節(jié)(byte):是計(jì)算機(jī)中 數(shù)據(jù)處理 的基本單位,習(xí)慣上用大寫(xiě) B 來(lái)表示,1B(byte,字節(jié))= 8bit(位)
字符:是指計(jì)算機(jī)中使用的字母、數(shù)字、字和符號(hào)
說(shuō)明:
在oracle中,NVARCHAR2、NCHAR使用的是國(guó)家字符集(NLS_NCHAR_CHARACTERSET),同時(shí)國(guó)家字符集必須
為AL16UTF16、UTF8兩個(gè)中的一個(gè);其他的字符類型使用的是標(biāo)準(zhǔn)字符集(NLS_CHARACTERSET),例如該庫(kù)的字符集查詢?nèi)缦拢?/p>
測(cè)試
(1) 首先在數(shù)據(jù)庫(kù)字符集為ZHS16GBK,國(guó)家字符集為UTF8進(jìn)行測(cè)試:
建一張測(cè)試表并插入數(shù)據(jù) :
create table t_var(va nvarchar2(32),vb varchar2(32));
insert into t_var values('你好','你好');
insert into t_var values('hello','hello');
此時(shí)我們查詢:
測(cè)試結(jié)果:
a. 當(dāng)字符類型使用標(biāo)準(zhǔn)字符集為ZHS16GBK時(shí),一個(gè)英文字符占一個(gè)字節(jié),一個(gè)中文字符占兩個(gè)字節(jié);
b. 當(dāng)字符類型使用國(guó)家字符集為UTF8時(shí),一個(gè)英文字符占一個(gè)字節(jié),一個(gè)中文字符占三個(gè)字節(jié);
(2) 然后我們?cè)诹硪粋€(gè)庫(kù)標(biāo)準(zhǔn)字符集為ZHS16GBK,國(guó)家字符集為AL16UTF16時(shí),再進(jìn)行以上相同的測(cè)試:
測(cè)試結(jié)果:
a. 當(dāng)字符類型使用標(biāo)準(zhǔn)字符集為ZHS16GBK時(shí),一個(gè)英文字符占一個(gè)字節(jié),一個(gè)中文字符占兩個(gè)字節(jié);
b.當(dāng)字符類型使用國(guó)家字符集為AL16UTF16時(shí),一個(gè)英文字符占兩個(gè)字節(jié),一個(gè)中文字符占兩個(gè)字節(jié);
以上是一個(gè)簡(jiǎn)單的測(cè)試過(guò)程,說(shuō)明當(dāng)我們當(dāng)我們選擇不同的字符類型時(shí),一個(gè)字符所占的字節(jié)是不一樣的,這可能會(huì)對(duì)我們使用一些字符處理的函數(shù)時(shí)造成影響。
此外,我們?cè)谌粘9ぷ髦?,也許看到過(guò)以下的字符長(zhǎng)度定義的寫(xiě)法:
varchar2(32)
varchar2(32 char)
varchar2(32 byte)
這三種定義方法都是正確的,只不過(guò)它表示的意思是不一樣的:
varchar2(32 char) :指定了字符串最大長(zhǎng)度是32位,不管是中文還是英文,最大存儲(chǔ)長(zhǎng)度是32位;
varchar2(32 byte) :指定了字符串所占的最長(zhǎng)字節(jié)數(shù)為32,例如允許存儲(chǔ)中文最多16個(gè),英文32個(gè);
varchar2(32) :未明確指定字符串最大長(zhǎng)度的度量是以byte為準(zhǔn),還是以char為準(zhǔn),此時(shí)起決定作用的是
參數(shù)NLS_LENGTH_SEMANTICS;
在測(cè)試庫(kù)中查詢?cè)搮?shù)如下:
可以看到數(shù)據(jù)庫(kù)默認(rèn)的字符串長(zhǎng)度的度量是BYTE。
感謝各位的閱讀,以上就是“oracle字符與字節(jié)的知識(shí)整理”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)oracle字符與字節(jié)的知識(shí)整理這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。