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将自动去除数据末尾的空格
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将自动去除数据末尾的空格
相关文章推荐
- oracle char与varchar2的比较与使用
- Oracle使用char查不出数据
- oracle中char与varchar2的区别
- oracle中char和varchar2数据类型的区别
- PHP中date()函数与Oracle的to_date()和to_char()的使用
- char和varchar2的区别(oracle)
- oracle使用to_char和next_day函数得到本周的第一天和最后一天日期
- oracle 中char、varchar和varchar2的一些问题
- Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用
- Oracle中CHAR与VARCHAR2的区别
- oracle中char与varchar2的区别
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- oracle中char() varchar() varchar2()类型之间的联系与区别
- oracle中字段char、varchar和varchar2的区别
- oracle使用to_char和next_day函数得到本周的第一天和最后一天日期
- oracle中char和varchar2的区别
- oracle中char与varchar2的区别
- oracle使用Union的时候遇到列格式clob和varchar2不符,不能转的问题
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- 浅析Oracle中char和varchar2的区别