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
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
相关文章推荐
- Oracle中CHAR与VARCHAR2的区别
- oracle中char和varchar2数据类型的区别
- Oracle数据库中char(),varchar2(),nvarchar2()三种数据类型的区别
- char、varchar和varchar2的区别
- oracle中字段char、varchar和varchar2的区别
- oracle数据库中VARCHAR2(50 CHAR) 和VARCHAR2(50) 有啥区别?
- char、varchar和varchar2的区别
- oracle中char与varchar2的区别
- char()和varchar2()的区别
- char、varchar和varchar2的区别(转)
- Oracle数据库中char(),varchar2(),nvarchar2()三种数据类型的区别
- char(10)、varchar2(10)、nvarchar2(10) 区别
- char和varchar2的区别
- oracle中char与varchar2的区别
- char和varchar2的区别
- char、varchar和varchar2的区别(zz)
- varchar2的参数(byte和char)区别
- 浅析Oracle中char和varchar2的区别
- char、varchar和varchar2的区别(zt)
- Oracle数据库中char(),varchar2(),nvarchar2()三种数据类型的区别