oracle中字段类型varchar2最大长度是多少?
1、varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。这是一个比较容易出错的地方。
2、因为在函数中可以声明长度超过4000的字符串变量,并且将它作为返回值,这里是不会提示编译错误的。这个函数平时都可以正常执行,而一旦这个字符串长度超过4000,函数执行就会出错。
3、在pl/sql中,建个函数,测试varchar2长度,可以看到函数是成功的;
4、但是在执行的时候,函数是会报错的;
扩展资料
1、varchar2是oracle提供的独有的数据类型,varchar2是存放可变长度的字符串,最大长度是4000.
2、在oracle中 varchar2的最大长度为4000 bytes,即varchar2(4000),最多能储存2000个汉字或4000位的数字字母。当储存值超过时可以使用clob(Character Large Object)或blob(Binary Large Object)类型。
3、varchar、varchar2、nvarchar2区别
1)varchar(50) 表示该字段类型为varchar2类型,长度为50,可以存单字节字符50个,如字母、数字等,可以存储双字节字符25个,如汉字。不同的是,若输入的不足,则以空格填充。
2)varchar2(50) 表示该字段类型为varchar2类型,长度为50,可以存单字节字符50个,如字母、数字等,可以存储双字节字符25个,如汉字。
3)nvarchar2(50)表示该字段类型为nvarchar2,长度为50,不论英文,数字,中文都能存50个。
参考资料
4000字节长度。
比如,varchar2(100),就相当于varchar2(100 byte),表示最大字节数是100,该字段最多能容纳100个字节,强调空间大小。
由于我们描述的是字节,因此,保存汉字等字符时,如果数据库用的是GBK编码,那么一个汉字将占用2个字节,最多能存50个汉字,如果你的数据库用的是UTF8编码,那么一个汉字将占用3个字节,最多能存33个汉字。
扩展资料:
实际应用中,很可能会出现这种写法:varchar2(1400char),这个字段最长不能超过1400个字符,可能会存入1399个字符。
但是,如果这1399个字符都是汉字,字符长度并没有超过1400,但实际上损失了一部分数据。
因为1399个汉字,按UTF8编码来说,需要占用1399*3=4197个字节,而最大长度就是4000字节,一个也不能多,因此多出来的197个字节,都会抹去,而整个过程中,无任何错误提示。
对于GBK编码的数据库而言,安全的写法为:varchar2(2000 char)、nvarchar2(2000)。
对于UTF8编码的数据库而言,安全的写法为:varchar2(1333char)、nvarchar2(2000)。
varchar2的最大存储长度是4000。
如以下语句:
create table test
(id varchar2(4001));
执行时会报错。
如果将语句改为如下,则会执行成功。
create table test
(id varchar2(4000));
关于oracle中的字符类型char、varchar、varchar2 的区别
区别:
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。