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

char,varchar2在ORACLE中的使用

2004-08-27 00:36 1151 查看
概念:
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将自动去除数据末尾的空格
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息