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将自动去除数据末尾的空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值