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