程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中varchar,varchar2,nvarchar,nvarchar2的區別及其它數據類型描述,varchar2nvarchar2

Oracle中varchar,varchar2,nvarchar,nvarchar2的區別及其它數據類型描述,varchar2nvarchar2

編輯:Oracle教程

Oracle中varchar,varchar2,nvarchar,nvarchar2的區別及其它數據類型描述,varchar2nvarchar2


--varchar,varchar2

聯系:

1.varchar/varchar2用於存儲可變長度的字符串

比如varchar(20),存入字符串'abc',則數據庫中該字段只占3個字節,而不是20個字節

2.size 的最大值是 4000,而最小值是 1,其值表示字節數,比如

varchar(20)表示最大可以存放20個字節的內容

區別:

1.varchar2把所有字符都占兩字節處理(一般情況下),varchar只對漢字和全角等字符占兩字節,數字,英文字符等都是一個字節;

2.VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;

3.VARCHAR2字符要用幾個字節存儲,要看數據庫使用的字符集,

比如GBK,漢字就會占兩個字節,英文1個

如果是UTF-8,漢字一般占3個字節,英文還是1個。 

但是一般情況下,我們都認為是兩個字節處理,因為oracle安裝時候默認我們都選擇GBK的編碼格式,但是我們在頁面做輸入字符串長度的校驗的時候,還是以數據庫設計字段最大長度除3來作為最大長度-----防止數據庫移植時設置不同編碼格式;

比如:VARCHAR2(10),一般情況下最多存放5個漢字,10個字符

--nvarchar,nvarchar2 

聯系:

1.nvarchar/nvarchar2用於存儲可變長度的字符串

2.size 的最大值是 4000,而最小值是 1,其值表示字符的個數,而不是字節數

3.這兩種類型更適合存儲中文

區別:

1.nvarchar中字符為中文則一般按2個字節計算,英文數字等按照一個自己計算

2.nvarchar2中所有字符均按照2個字節計算;

3.nvarchar2雖然更占空間,但是它有更好的兼容性,所有推薦使用;

【注意】

VARCHAR2是Oracle提供的特定數據類型,Oracle可以保證VARCHAR2在任何版本中該數據類型都可以向上和向下兼容。

VARCHAR在Oracle中不建議使用。

具體到NVARCHAR2和VARCHAR2的區別,從使用角度來看區別在於:NVARCHAR2在計算長度時和字符集相關的,例如數據庫是中文字符集時以長度10為例,則

1、NVARCHAR2(10)是可以存進去10個漢字的,如果用來存英文也只能存10個字符。

2、而VARCHAR2(10)的話,則只能存進5個漢字,英文則可以存10個。  

VARCHAR2(size)

可變長度的字符串,其最大長度為size個字節;size的最大值是4000,而最小值是1;你必須指定一個VARCHAR2的size;

NVARCHAR2(size)

可變長度的字符串,依據所選的國家字符集,其最大長度為size個字符或字節;size的最大值取決於儲存每個字符所需的字節數,其上限為4000;你必須指定一個NVARCHAR2的size;

NUMBER(p,s)

精度為p並且數值范圍為s的數值;精度p的范圍從1到38;數值范圍s的范圍是從-84到127;

例如:NUMBER(5,2) 表示整數部分最大3位,小數部分為2位;

NUMBER(5,-2) 表示數的整數部分最大為7其中對整數的倒數2位為0,前面的取整。

NUMBER 表示使用默認值,即等同於NUMBER(5);

LONG

可變長度的字符數據,其長度可達2G個字節;

DATE

有效日期范圍從公元前4712年1月1日到公元後4712年12月31日

RAW(size)

長度為size字節的原始二進制數據,size的最大值為2000字節;你必須為RAW指定一個size;

LONG RAW

可變長度的原始二進制數據,其最長可達2G字節;

CHAR(size)

固定長度的字符數據,其長度為size個字節;size的最大值是2000字節,而最小值和默認值是1;

NCHAR(size)

也是固定長度。根據Unicode標准定義

CLOB

一個字符大型對象,可容納單字節的字符;不支持寬度不等的字符集;最大為4G字節

NCLOB

一個字符大型對象,可容納單字節的字符;不支持寬度不等的字符集;最大為4G字節;儲存國家字符集

BLOB

一個二進制大型對象;最大4G字節

BFILE

包含一個大型二進制文件的定位器,其儲存在數據庫的外面;使得可以以字符流I/O訪問存在數據庫服務器上的外部LOB;最大大小為4G字節.

blob、clob、nclob 三種大型對象(LOB),用來保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,以及音頻、視頻等非文本文件,最大長度是4GB。 LOB有幾種類型,取決於你使用的字節的類型,Oracle 8i實實在在地將這些數據存儲在數據庫內部保存。 可以執行讀取、存儲、寫入等特殊操作 CLOB(Character Large Object) 用於存儲對應於數據庫定義的字符集的字符數據。(類似於long類型) BLOB(Binary Large Object) 可用來存儲無結構的二進制數據。(類似於row和long row)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved