添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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类型的字符串,在比较之前,会将其中较短的字符串末尾补充空格至与较长字符串长度一致,然后进行字符的比对。 从上面的代码可以看出,由于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类型显得有优势。 1. char 的最大 长度 一直记得 char 的最大 长度 是255字节, varchar 2是4000字节,结果今天看 oracle 9i的SQL Reference,发现错了, char 的最大 长度 是2000。 想想原因,可能是和informix的 char varchar 长度 记混了。informix里面 varchar 是255, char 的最大是32767,但是实际上和整行大小有关系,整行大小不能超过32767, 你可以指定日期格式模型来控制日期的显示方式,例如显示日期、时间、时区等。此外,你还可以使用NLS_DATE_FORMAT参数来设置默认的日期格式,这样在使用TO_ CHAR 函数时就不需要指定格式模型了。在使用TO_ CHAR 函数时,你可以通过指定不同的格式模型来控制转换后的 字符 串的显示方式。在 Oracle 数据库 中,使用TO_ CHAR 函数将日期 类型 转换为 字符 串时,可以使用多种日期格式模型(date format models)。请注意,TO_ CHAR 函数中的日期格式模型是区分大小写的。 varchar 长度 不固定的,比如说,你定义了 varchar (20),当你插入abc,则在 数据库 中只占3个字节。 varchar 同样区分中英文,这点同 char varchar 2基本上等同于 varchar ,它是 oracle 自己定义的一个非工业标准 varchar ,不同在于, varchar 2用null代替 varchar 的"ht... VARCHAR 2和N VARCHAR 2在 数据库 中都用于 储变长 字符 数据,但两者在 储方式和 字符 长度 在一些不同。综上所述, VARCHAR 2和N VARCHAR 2的主要区别在于 储方式、 字符 长度 字符 集编码。需要根据具体应用场景和数据特点选择合适的 类型 储数据。 CHAR 与N CHAR Oracle 数据库 是常用的 类型 ,不过两种数据 类型 是互相不兼容的,这里大概简要谈一下这2种数据 类型 吧。在 Oracle 中, CHAR 类型 是一种固定 长度 字符 类型 ,最大 长度 是2000个byte,在这里要注意了,是2000个byte,并不是2000个 字符 的意思。1个 字符 Oracle 中可能是1个byte到4个byte不等,这个要看 数据库 的设置了。这个是 数据库 中有一个参数NLS_LEN... char 长度 是固定的,在 储中比如 储“abc”, char (6),实际在库中 储的是“abc ” varchar 长度 是可变的,还是以上例子,在库中 储的就是“abc” 2. varchar varchar 2 的区别 varchar 储汉字2个字节,英文一个字节, 储空用空 字符 串表示 varchar 2 储任何 字符 都按照两个字... Oracle 中N VARCHAR 2和 VARCHAR 2的区别 : 从使用角度来看区别在于:N VARCHAR 2在计算 长度 时和 字符 集相关的,例如 数据库 是中文 字符 集时以 长度 10为例, 1、N VARCHAR 2(10)是可以 进去10个汉字的,如果用来 英文也只能 10个 字符 。  2、而 VARCHAR 2(10)的话,则只能 进5个汉字,英文则可以 10个 CHAR 固定 长度 字符 域,最大 长度 可达2 不论在表段还是索引段中, CHAR 都会占用最大的 储空间,这就够糟糕了,避免使用 CHAR /N CHAR 类型 还有另外一个很重要的原因: CHAR /N CHAR 类型 还会给使用这些数据的应用带来混乱,原因与 字符 串的比较的规则有关,也与执行 字符 串比较多严格程度有关。使用诸如UTF-8的多字节 字符 集时,建议在 VARCHAR 2/ CHAR 定义中使用 CHAR 修饰符,也就是说使用 VARCHAR 2(80 CHAR ),而不是 VARCHAR 2(80),因为是要定义一个实际上能 储80 字符 数据的列。