1、varchar2最大可以存储4000个字节,也就是最大只能写成varchar2(4000);
2、创建表
create table T_TEST
(
ID VARCHAR2(32) not null,
TEST_VARCHAR2 VARCHAR2(4000),
USERNAME VARCHAR2(6)
)
3、向TEST_VARCHAR2 字段插入2000个汉字(多加一个字母就会报错),由于字数过篇幅长,这里省略部分字符。
insert into t_test
(id, test_varchar2)
values
('2',‘这里写入2000个中文汉字’)
4、查询长度和字节长度
select length(test_varchar2),lengthb(test_varchar2) from t_test ;
5、插入4000个字母,再次查询长度和字节长度
结论,varchar2 能存储 2000个汉字和4000个字母。
6、网上搜到说一个汉字站三个字节,这与数据库的字符编码有关,我本地使用的是GBK,16位,一个汉字站两个字节,若使用utf-8,32位 则会出现一个汉字占3个字节(此处为做试验,这里引入参考文章的路径http://a498740995.iteye.com/blog/1610172)
7、扩展ORACLE nvarchar2和varchar2的区别
1、NVARCHAR2中存储中文字时,一个中文字当一个字符来处理
NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2中一个中文字当两个字符来处理
VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个
Oracle中nvarchar2和varchar2的共同点:
不定长存储,当存储信息长度小于指定的长度,那么就已实际存入的长度为准这一点不像varchar这种定长存储那样浪费空间,比如varchar 指定是10个字符,那么存入5个字符的时候,他会自动填充空格来补齐以达到指定的长度