1. 程式人生 > >varchar和varchar2的區別

varchar和varchar2的區別

apps blob 訪問 存在 ber 就會 對象 個數 file

--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(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字節.

轉自:http://apps.hi.baidu.com/share/detail/18768651

varchar和varchar2的區別