溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

oracle字符與字節(jié)的知識(shí)整理

發(fā)布時(shí)間:2021-09-03 18:13:03 來(lái)源:億速云 閱讀:246 作者:chen 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要講解了“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>

oracle字符與字節(jié)的知識(shí)整理

測(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í)我們查詢:

oracle字符與字節(jié)的知識(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è)試:

oracle字符與字節(jié)的知識(shí)整理

測(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ù)如下:

oracle字符與字節(jié)的知識(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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI