上面字符類型能保存多少個字符與oracle當前的字符集有關系。
select userenv('language') from dual;
假設長度2000字節,
如果字符集是16位編碼的,ZHS16GBK,那么每個字符16位,2字節,所以可以容納1000字符。
如果是32位編碼的字符集,4字節,那么只能存儲 500個字符。
char:固定長度字符域,最大長度可達2000個字節,如果存儲的數據沒有達到指定長度,自動補足空格。
例子:
create table student2(sno int,sname char(2000),sage int
);insert into student2 values(1,'小項目',24);
commit;
JDBC讀取的時候,還要用 trim把空格去掉。
jdbc下where SNAME='小項目'。無結果
jdbc下where trim(SNAME)='小項目'。才有結果
因此,用char要注意!
varchar 可変長,4000字節。
varchar2 可変長,4000字節。
目前VARCHAR是VARCHAR2的同義詞。
工業標準的VARCHAR類型可以存儲空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權利。
Oracle自己開發了一個數據類型VARCHAR2,這個類型不是一個標準的VARCHAR,
它將在數據庫中varchar列可以存儲空字符串的特性改為存儲NULL值。
如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。
varchar(50) 表示該字段類型為varchar2類型,長度為50,可以存單字節字符50個,如字母、數字等,
可以存儲雙字節字符25個,如漢字。
varchar2(50) 表示該字段類型為varchar2類型,長度為50,可以存單字節字符50個,如字母、數字等,
可以存儲雙字節字符25個,如漢字。
nvarchar2?可変長,4000字節。
nvarchar2(50)表示該字段類型為nvarchar2,長度為50,不論英文,數字,中文都能存50個。