注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

lazydba

hello

 
 
 

日志

 
 

char 和 varchar  

2007-04-18 13:22:56|  分类: all about databa |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Environment:
DB2: create table dummy(a int, b char(30), c varchar(30));
RDB: create table dummy(a int, b char(30), c varchar(30));
Oracle: create table dummy(a int, b char(30), c varchar2(30));
insert into dummy values(1, 'BBB', 'CCC');
insert into dummy values(2, '?', '');
insert into dummy values(3, '', ' ');
Oracle, DB2的JDBC驱动都是官方驱动,RDB的驱动由第三方提供。
?
Test 1: JDBC getString
?????????? a???? b????? b.length???? c????? c.length
DB2??????1??? BBB???? 30?????????CCC????? 3?
RDB??????1????BBB?????3 ????????? CCC????? 3
OracLe??1??? BBB???? 30?????????CCC??????3?
DB2????? 2???""????????30????????? ""????????? 0
RDB????? 2?? ""????????0??????????? ""????????? 0
Oracle?? 2?? ""??????? 30????????? null?????? -
DB2??????3?? ""???????? 30????????? " "??????? 1
RDB??????3?? ""???????? 0????????????""??????? 0
Oracle???3?? null????? -???????????? " "??????? 1
?
结论:
a) RDB会把CHAR, VarChar类型后面的空格截掉,DB2, Oracle不会
b) VarChar不会在字段后面加空格
c) ''在Oracle中为null,在RDB, DB2中不为null
?
Test 2: JDBC, PreparedStatement, "select a from dummy where [bc] = ?", setString
??????????????? b =?"" " " "? "???????????? c = "", " ", "? "
DB2:??????????[23] [23] [23]??????????? [23][23][23]
RDB:??????????[23][23][23]??????????????[23][23][23]?
Oracle:?????? [-][-][-]?????????????????? [-][3][-]
结论:
a) Oracle中,CHAR, VarChar和setString里string的空格数目不相等,where条件不能匹配。
b) RDB, DB2中,CHAR, VarChar和setString里string的空格数目不等,where条件可以匹配。
?
Test 3:
select a from dummy where null = null
DB2:??? The data types of the operands for the operation "=" are not compatible
RDB:??? 0 rows selected
Oracle: 0 rows selected
?
select a from dummy where null <> null
DB2:?? The data types of the operands for the operation "<>" are not compatible
RDB:???0 rows selected
Oracle:0 rows selected
?
select a from dummy where null is null
DB2:???? 1 2 3
RDB:???? 1 2 3
Oracle:? 1?2 3??
?
结论:很明显
?
最终结论:
a) 不同的数据库是不同的
b) 不同的JDBC驱动是不同的

  评论这张
 
阅读(80)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017