char,varchar2在ORACLE中的使用

概念:
char类型:定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
varchar2类型:可变长的字符串,具体定义时指明最大长度n,这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC

等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度

,如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。可做索引的最大长度3209。

情况:

在使用varchar2类型时发现,在设定字段unique约束是无法达到约束的目的,经过仔细研究发现varchar2字段在对数据进行匹配

是存在包含末尾空格的情况.

分析:

SQL> create table test2(a char(6));

表已创建。

SQL> insert into test2 values('abc');

已创建 1 行。

SQL> insert into test2 values('bcd ');

已创建 1 行。

SQL> select * from test2 where a='bcd';

A
------
bcd

已选择 1 行。

SQL> select * from test2 where a='bcd ';

A
------
bcd

已选择 1 行。

SQL>alter table test2 modify (a varchar2(6))
表已更改。

SQL> select * from test2 where a='bcd ';

未选定行

SQL> select * from test2 where a='bcd'

未选定行

SQL> select * from test2 where a='bcd   '

A
------
bcd

SQL> alter table test2 modify (a char(6));

表已更改。

SQL> select * from test2 where a='bcd';

A
------
bcd

已选择 1 行。

SQL> alter table test2 modify (a char(6));

表已更改。

SQL> select * from test2 where a='bcd';

A
------
bcd

已选择 1 行。

结论:在将char数据类型改为varchar2类型后,oracle将自动添加末尾的空格到字段长度;
varchar2类型转换为char类型,oralce将自动去除数据末尾的空格

阅读更多
个人分类: 数据库相关
上一篇使用批处理文件——常用命令
下一篇全局变量的使用注意
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭