CHAR类型的内部代码是96,最大长度是2000;VARCHAR2的内部代码是1,最大长度是4000。CHAR和VARCHAR2类型都是按照国际字符集存储的。
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