db2 10 往一个测试表里插入空字符串'',但是查询出来后,该字段为null
3个回答
展开全部
我这里'' 和null是不一样的.db2可以区分的
insert into tab values(1,'JACK','0001','2000');
insert into tab values(2,'TOM','0002','');
insert into tab values(3,'LUCY','0003','3000');
insert into tab values(4,'JAME','0004','');
insert into tab values(4,'KIM','0005',null);
db2 => select * from tab;
select * from tab
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
1 JACK 0001 2000
2 TOM 0002
3 LUCY 0003 3000
4 JAME 0004
4 KIM 0005 -
5 record(s) selected.
db2 => select * from tab where salary not in ('2000','3000');
select * from tab where salary not in ('2000','3000')
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
2 TOM 0002
4 JAME 0004
2 record(s) selected.
db2 => select * from tab where salary is null;
select * from tab where salary is null
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
4 KIM 0005 -
1 record(s) selected
insert into tab values(1,'JACK','0001','2000');
insert into tab values(2,'TOM','0002','');
insert into tab values(3,'LUCY','0003','3000');
insert into tab values(4,'JAME','0004','');
insert into tab values(4,'KIM','0005',null);
db2 => select * from tab;
select * from tab
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
1 JACK 0001 2000
2 TOM 0002
3 LUCY 0003 3000
4 JAME 0004
4 KIM 0005 -
5 record(s) selected.
db2 => select * from tab where salary not in ('2000','3000');
select * from tab where salary not in ('2000','3000')
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
2 TOM 0002
4 JAME 0004
2 record(s) selected.
db2 => select * from tab where salary is null;
select * from tab where salary is null
ID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
4 KIM 0005 -
1 record(s) selected
追问
您好,你的解释是对的,db2 本来就是分''和null的,Oracle似乎是不分的,但是我现在用的db2 10,结果不分了,应该是数据库哪个配置没有配置好,开始以为是db2 兼容Oracle特性开了,结果给关了依然把''当成null,所以很费解,对于您的感谢,您的回答 我给设为满意了
展开全部
根据数据库的不同,数据库是给'' null 也是不同的,你可以采用
is not ll
case when 值 is not null then '' else 'null' end
decode(值,'','空,'null','null值',' ','空格')
length(值)>0
等方式来进行判断
is not ll
case when 值 is not null then '' else 'null' end
decode(值,'','空,'null','null值',' ','空格')
length(值)>0
等方式来进行判断
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
帮你问了下,只有个大概的答案:
也许是数据库看到你插入的是空就判定你没有插入数据,貌似我以前也遇到过类似的问题,如果还存在有别的非空字段这条数据就会存在
也许是数据库看到你插入的是空就判定你没有插入数据,貌似我以前也遇到过类似的问题,如果还存在有别的非空字段这条数据就会存在
追问
您好,按说Oracle插入‘’会变成null ,但是db2 插入的话,应该是跟一般字符一样的,我记得我在其他db2上查询表,where column = ‘’ 这个会把数据中的‘’查出来,但是我现在用的db2 insert into table values ('') 之后,无论从客户端查看,还是通过命令查看,显示数据都为null,而且上面的where条件不起作用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询