日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ORACLE中一个字符占多少字节?

發布時間:2024/1/3 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 ORACLE中一个字符占多少字节? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

或許你會說一個中文字符占2個字節,這是一定的?如何計算一個字符串的字節數?

解決方案

在oracle中一個字符特別是中文占幾個字節是不同的。

比如我創立一個表create table test_ly(a varchar2(4),b nvarchar2(4))

你說a列能插入兩個漢字嗎?

錯!最多能插入一個漢字加一個字母(或數字)。

這是為什么?因為一個漢字在a字段中占了3個字節,其他字符(比如數字或者字母或者英文標點符號)占1個字節,

你說b列最多能插入多少個漢字,2個?

錯!b列最多能插入4個漢字,b列的一個漢字或者其他字符(比如數字或者字母或者英文標點符號)占2個字節。

由此可見,N開頭的字段類型(比如NCHAR,NVARCHAR2)中,任何一個字符(包括一個漢字)占2個字節,統一的。

不以N開頭的字段類型(比如CHAR,VARCHAR2)中,unicode字符(比如漢字)占3個字節,其他字符占1個字節。

如何求一個字符串占用的字符數和字節數?

Length 函數求得是占用字符數,lengthb或者vsize函數求得是占用字節數。

你說 中華12 這個字符串占用了多少字符,字節?看sql返回值便清楚了。

select length('中華12') from dual --返回4,也就是占用4個字符

select lengthb('中華12') from dual --返回8,也就是占用8個字節,其中中華兒子各占3個字節,而12兩個字符各占一個字節

select lengthb(N'中華1') from dual --返回6,這是將字符串轉換成為unicode字符串后,每個字符占用2個字節,3個就是6個字節

select length(N'中華1') from dual --返回3,因為只有3個字符嘛。

字符串類型字段默認的長度是以字節為單位的,具體取決于參數nls_length_semantics 的值(使用show parameters可以看到這個參數的值),默認是BYTE,也就是以字節為單位的,如果是CHAR則是以字符為單位的。表的某列可以使用字符為單位嗎?當然可以,比如這樣創建即可:create table test_ly(a varchar2(4 char)) 這樣a列就最多能保存4個字符,而不是4個字節了。

2.關于oracle中varchar2與nvarchar2的一點認識
今天在oracle 10g下測試了下varchar2與nvarchar2這兩種類型,網上有很多關于這兩種類型的區別的帖子,我還是自己測試了下。

varchar2(size type),size最大為4000,type可為char或者byte,默認是byte。

varchar2最多存放4000字節的數據,不管type是char還是byte。所以如果你設置varchar2(4000 char),你可以存入4000個字母,但是不能存入4000個漢字。如果數據庫字符集編碼是GBK,那么varchar2最多能存放2000個漢字,如果字符集編碼是UTF-8,那么則只能最多存放1333個漢字了。

nvarchar2(size),size最大值為2000,單位是字符,而且不管是漢字還是字母,每個字符的長度都是2個字節。所以nvarchar2類型的數據最多能存放2000個漢字,也最多只能存放2000個字母。并且nvarchar2不同于varchar2,他不受數據庫字符集的影響。

另外如果我們把A1,A2都設為varchar2(4000),并且這兩個字段的內容長度都超過了2000字節,那么使用select A1||A2 from table這樣的語句時,因為結果超過了4000字節,所以會報錯。

3.Oracle的varchar2最多可以存多少個漢字?
如果Oracle 的字符集是Utf-8, varchar2(4000)最多可以存1333個漢字,而varchar2(4000 char)其實和varchar2(1333 char)一樣,也是只能存1333個漢字;
如果Oracle的字符集是GBK,一個漢字是2個字節的話,varchar2(4000)最多可以存2000個漢字,而varchar2(4000 char)其實和varchar2(2000 char)一樣,也是只能存2000個漢字;

總結

以上是生活随笔為你收集整理的ORACLE中一个字符占多少字节?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。