您的位置:首页 > 数据库 > Oracle

Char和Varchar2的区别

2008-09-12 13:55 351 查看
CHAR类型的内部代码是96,最大长度是2000;VARCHAR2的内部代码是1,最大长度是4000。CHAR和VARCHAR2类型都是按照国际字符集存储的。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

CHAR类型是固定长的,对于小于字段长度的值,字符串后面自动填充空格(字符32)。

以下是一个例子:

TESTCHAR表有2个字段,empno是number类型的,ename是char(10)。数据来源是SCOTT的EMP表。对于EMP表和TESTCHAR表,进行了以下的修改,以便于对汉字进行研究。

SQL> update testchar set ename='张山' where empno=7369;

1 row updated.

SQL> update emp set ename='张山' where empno=7369

1 row updated.

SQL> commit;

以下是测试结果:

SQL> select empno,dump(ename) ename from testchar;

     EMPNO ENAME

     EMPNO ENAME

      7369 Typ=96 Len=10: 213,197,201,189,32,32,32,32,32,32

      7499 Typ=96 Len=10: 65,76,76,69,78,32,32,32,32,32

      7521 Typ=96 Len=10: 87,65,82,68,32,32,32,32,32,32

      7566 Typ=96 Len=10: 74,79,78,69,83,32,32,32,32,32

      7654 Typ=96 Len=10: 77,65,82,84,73,78,32,32,32,32

      7698 Typ=96 Len=10: 66,76,65,75,69,32,32,32,32,32

      7782 Typ=96 Len=10: 67,76,65,82,75,32,32,32,32,32

      7788 Typ=96 Len=10: 83,67,79,84,84,32,32,32,32,32

      7839 Typ=96 Len=10: 75,73,78,71,32,32,32,32,32,32

      7844 Typ=96 Len=10: 84,85,82,78,69,82,32,32,32,32

      7876 Typ=96 Len=10: 65,68,65,77,83,32,32,32,32,32

VARCHAR2字段是可变长的,Oracle不填充任何数据,以下是对scott的emp表的DUMP结果:

SQL> SELECT EMPNO,DUMP(ENAME) ENAME FROM EMP;

     EMPNO ENAME

      7369 Typ=1 Len=4: 213,197,201,189

      7499 Typ=1 Len=5: 65,76,76,69,78

      7521 Typ=1 Len=4: 87,65,82,68

      7566 Typ=1 Len=5: 74,79,78,69,83

      7654 Typ=1 Len=6: 77,65,82,84,73,78

      7698 Typ=1 Len=5: 66,76,65,75,69

      7782 Typ=1 Len=5: 67,76,65,82,75

      7788 Typ=1 Len=5: 83,67,79,84,84

      7839 Typ=1 Len=4: 75,73,78,71

      7844 Typ=1 Len=6: 84,85,82,78,69,82

      7876 Typ=1 Len=5: 65,68,65,77,83
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql oracle 测试 存储