ORACLE字符类型详解----char、nchar、varchar、varchar2、nvarchar2
2016-11-22 11:39
537 查看
ORACLE字符类型详解----char、nchar、varchar、varchar2、nvarchar2
转载自:http://www.2cto.com/database/201310/252696.html
oracle提供了五种字符数据类型:char、nchar、varchar、varchar2、nvarchar2。
char:使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格。指定长度时,默认长度的计量单位由NLS_LENGTH_SEMANTICS(默认为字节byte)参数决定,但是我们可以手动指定为char或者byte。oracle建议使用NLS_LENGTH_SEMANTICS来指定计量单位,这样可以提高效率。char类型的最大存储长度为2000个字节,在plsql中,最大存储长度可以达到32767个字节。使用char时,可以不指定最大长度,此时最大长度为1.
nchar:使用国家字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,数据库自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为2000个字节,在plsql中,其最大存储长度可以达到32767个字节。使用nchar时,可以不指定最大长度,此时最大长度为1.
varchar2: 使用数据库字符集存储数据,长度可变,如果存储数据没有达到指定长度,不自动补足空格。可使用char,byte为计量单位,默认受参数NLS_LENGTH_SEMANTICS的影响。最大存储长度为4000个字节,在plsql中,存储长度可达32767个字节。必须指定最大长度,长度最小值为1.
nvarchar2:使用国家字符集来存储数据,长度可变,如果存储的数据没有达到指定长度,不自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为4000个字节,在plsql中,其最大存储长度可以达到32767个字节。必须指定最大长度,长度最小值为1.
varchar:oracle目前并没有实现该数据类型,当前版本下,varchar与varchar2完全一致,但不保证将来不会单独设计varchar。
下面我们只讨论char和varchar2的区别,至于nchar nvarchar2 varchar,我相信聪明的同仁们肯定可以触类旁通。
1:char 与varchar2在存储上的区别,仅仅在于char会使用空格来填充空间,由于varchar2采用变长的方式存储数据,因此可以节省空间,这是毋庸置疑的。
2:在效率方面,varchar2和char在某些情况下,各有优劣,并没有实质上的差别。
3:在字符比较上的差别,是char和varchar2的主要差别。当两个字符串进行比较时,如果其中任何一个字符串为varchar2类型(文本串作为char类型来处理),那么两个字符串直接进行比较;如果不存在varchar2类型的字符串,在比较之前,会将其中较短的字符串末尾补充空格至与较长字符串长度一致,然后进行字符的比对。[/u]
?
从上面的代码可以看出,由于char的自动补足,以及char和char类型比较时的自动长度对齐,使得字符串数据的处理显得难以捉摸。当然,我们可以使用trim或者rpad函数来进行字符串的处理,但是这往往会导致索引的失效。
4:char类型数据可能造成数据信息的丢失,例如,我们赋值”aaa " 给变量B char(10),当B接收的变量时,其存储内容为"aaa ",此时,我们无处指定赋值给B的原始值是否包含空格以及包含多少空格。
5:在plsql程序中,在编译时刻,oracle会为char类型分配指定最大长度的内存;对于varchar2类型,如果最大长度没有超过4000,则在编译时,分配指定最大长度的内存;如果长度超过或者等于4000,oracle会在运行时刻分配符合实际值大小的内存。
结论:使用varchar2数据类型作为字符串的首选类型,即便是在处理”男“,”女“这样的性别数据时,使用char类型也不比varchar2类型显得有优势。
转载自:http://www.2cto.com/database/201310/252696.html
oracle提供了五种字符数据类型:char、nchar、varchar、varchar2、nvarchar2。
char:使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格。指定长度时,默认长度的计量单位由NLS_LENGTH_SEMANTICS(默认为字节byte)参数决定,但是我们可以手动指定为char或者byte。oracle建议使用NLS_LENGTH_SEMANTICS来指定计量单位,这样可以提高效率。char类型的最大存储长度为2000个字节,在plsql中,最大存储长度可以达到32767个字节。使用char时,可以不指定最大长度,此时最大长度为1.
nchar:使用国家字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,数据库自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为2000个字节,在plsql中,其最大存储长度可以达到32767个字节。使用nchar时,可以不指定最大长度,此时最大长度为1.
varchar2: 使用数据库字符集存储数据,长度可变,如果存储数据没有达到指定长度,不自动补足空格。可使用char,byte为计量单位,默认受参数NLS_LENGTH_SEMANTICS的影响。最大存储长度为4000个字节,在plsql中,存储长度可达32767个字节。必须指定最大长度,长度最小值为1.
nvarchar2:使用国家字符集来存储数据,长度可变,如果存储的数据没有达到指定长度,不自动补足空格。指定长度时,采用char为计量单位,不可以手动指定其他单位。最大存储长度为4000个字节,在plsql中,其最大存储长度可以达到32767个字节。必须指定最大长度,长度最小值为1.
varchar:oracle目前并没有实现该数据类型,当前版本下,varchar与varchar2完全一致,但不保证将来不会单独设计varchar。
下面我们只讨论char和varchar2的区别,至于nchar nvarchar2 varchar,我相信聪明的同仁们肯定可以触类旁通。
1:char 与varchar2在存储上的区别,仅仅在于char会使用空格来填充空间,由于varchar2采用变长的方式存储数据,因此可以节省空间,这是毋庸置疑的。
2:在效率方面,varchar2和char在某些情况下,各有优劣,并没有实质上的差别。
3:在字符比较上的差别,是char和varchar2的主要差别。当两个字符串进行比较时,如果其中任何一个字符串为varchar2类型(文本串作为char类型来处理),那么两个字符串直接进行比较;如果不存在varchar2类型的字符串,在比较之前,会将其中较短的字符串末尾补充空格至与较长字符串长度一致,然后进行字符的比对。[/u]
?
从上面的代码可以看出,由于char的自动补足,以及char和char类型比较时的自动长度对齐,使得字符串数据的处理显得难以捉摸。当然,我们可以使用trim或者rpad函数来进行字符串的处理,但是这往往会导致索引的失效。
4:char类型数据可能造成数据信息的丢失,例如,我们赋值”aaa " 给变量B char(10),当B接收的变量时,其存储内容为"aaa ",此时,我们无处指定赋值给B的原始值是否包含空格以及包含多少空格。
5:在plsql程序中,在编译时刻,oracle会为char类型分配指定最大长度的内存;对于varchar2类型,如果最大长度没有超过4000,则在编译时,分配指定最大长度的内存;如果长度超过或者等于4000,oracle会在运行时刻分配符合实际值大小的内存。
结论:使用varchar2数据类型作为字符串的首选类型,即便是在处理”男“,”女“这样的性别数据时,使用char类型也不比varchar2类型显得有优势。
相关文章推荐
- ORACLE字符类型详解----char、nchar、varchar、varchar2、nvarchar2
- oracle字符类型 char,varchar2,varchar,clob,nvarchar,nclob
- 【Oracle】Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2字符总结
- [转]在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
- sql中的字符类型char,varchar,nchar,nvarchar
- Oracle字符串类型char,nchar,varchar2,nvarchar2区别
- SQL插入语句中有单引号 && SQL中char nchar varchar nvarchar的区别 && Java中字符(串)和数值类型的转换
- 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
- Oracle各种类型的运用|char、varchar、text和nchar、nvarchar、ntext的区别
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- SQL Server中字段数据类型char nchar varchar nvarchar的区别
- 关于Oracle中,char、nchar、varchar、nvarchar存储汉字是所需要的字节数
- SQL中数据类型char/varchar/nvarchar/nchar/text/ntext的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- 将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext?
- SQL Server中字段数据类型char nchar varchar nvarchar的区别
- char、nchar、varchar、nvarchar、text、ntext 区分及详解
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- SQL中数据类型char/varchar/nvarchar/nchar/text/ntext的区别