比如varchar(20),存入字符串'abc',則數據庫中該字段只占3個字節,而不是20個字節
varchar(20)表示最大可以存放20個字節的內容
比如GBK,漢字就會占兩個字節,英文1個
如果是UTF-8,漢字一般占3個字節,英文還是1個。
但是一般情況下,我們都認為是兩個字節處理,因為oracle安裝時候默認我們都選擇GBK的編碼格式,但是我們在頁面做輸入字符串長度的校驗的時候,還是以數據庫設計字段最大長度除3來作為最大長度-----防止數據庫移植時設置不同編碼格式;
比如:VARCHAR2(10),一般情況下最多存放5個漢字,10個字符
VARCHAR2是Oracle提供的特定數據類型,Oracle可以保證VARCHAR2在任何版本中該數據類型都可以向上和向下兼容。
VARCHAR在Oracle中不建議使用。
具體到NVARCHAR2和VARCHAR2的區別,從使用角度來看區別在於:NVARCHAR2在計算長度時和字符集相關的,例如數據庫是中文字符集時以長度10為例,則
1、NVARCHAR2(10)是可以存進去10個漢字的,如果用來存英文也只能存10個字符。
2、而VARCHAR2(10)的話,則只能存進5個漢字,英文則可以存10個。
可變長度的字符串,其最大長度為size個字節;size的最大值是4000,而最小值是1;你必須指定一個VARCHAR2的size;
可變長度的字符串,依據所選的國家字符集,其最大長度為size個字符或字節;size的最大值取決於儲存每個字符所需的字節數,其上限為4000;你必須指定一個NVARCHAR2的size;
精度為p並且數值范圍為s的數值;精度p的范圍從1到38;數值范圍s的范圍是從-84到127;
例如:NUMBER(5,2) 表示整數部分最大3位,小數部分為2位;
NUMBER(5,-2) 表示數的整數部分最大為7其中對整數的倒數2位為0,前面的取整。
NUMBER 表示使用默認值,即等同於NUMBER(5);
可變長度的字符數據,其長度可達2G個字節;
有效日期范圍從公元前4712年1月1日到公元後4712年12月31日
長度為size字節的原始二進制數據,size的最大值為2000字節;你必須為RAW指定一個size;
可變長度的原始二進制數據,其最長可達2G字節;
固定長度的字符數據,其長度為size個字節;size的最大值是2000字節,而最小值和默認值是1;
也是固定長度。根據Unicode標准定義
一個字符大型對象,可容納單字節的字符;不支持寬度不等的字符集;最大為4G字節
一個字符大型對象,可容納單字節的字符;不支持寬度不等的字符集;最大為4G字節;儲存國家字符集
一個二進制大型對象;最大4G字節
包含一個大型二進制文件的定位器,其儲存在數據庫的外面;使得可以以字符流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)