ITPub博客

首页 > Linux操作系统 > Linux操作系统 > char nchar varchar2 nvarchar2 区别-Oracle (varchar2 max 4K, 2K汉字)

char nchar varchar2 nvarchar2 区别-Oracle (varchar2 max 4K, 2K汉字)

原创 Linux操作系统 作者:chaobaojun 时间:2013-03-20 11:16:55 0 删除 编辑
char
固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 SQL 2003 同义词为 character。

varchar2
可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。SQL-2003 中的 varchar2 就是 char varying 或 character varying。

nchar
n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。nchar 的 SQL-2003 同义词为 national char 和 national character。

nvarchar2
可变 长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可以为 0 个字符。nvarchar2 的 SQL-2003 同义词为 national char varying 和 national character varying。 

char,varchar2
最 多8000个英文,4000个汉字

nchar,nvarchar2
可存储4000个字符,无论英文还是汉字



char,nchar
定 长,速度快,占空间大,需处理

varchar2,nvarchar2
变长,速度慢,占空间小,无需处理
定长就是长度固定 的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度。
变长字符数据则不会以空格填充,比较例外的 是,text存储的也是可变长。



1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到 trim()。

2、varchar2。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可 能超过10个字符,把它定义为 varchar2(10)是最合算的。varchar2类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长 度。从空间上考虑,用varchar2合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、NCHAR、 Nvarchar2、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需 要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而 产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、 nvarchar2的长度是在1到4000之间。和char、varchar2比较起来,nchar、nvarchar2则最多存储4000个字符,不论 是英文还是汉字;而char、varchar2最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar2数据类型时不用担 心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
所以一般来说,如果含有中文字符,用nchar/nvarchar2,如 果纯英文和数字,用char/varchar2

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21861353/viewspace-756589/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-14

  • 博文量
    29
  • 访问量
    67527