一直以为空字符串是就是NULL,当插入空字符串的时候就可以通过NULL,但是前段时间开发发现使用not in特定值后发现,空字符集居然也没有包括在内,当时我也认为,应该包括在内,后来做了个如下测试发现其实在DB2中NULL和空串真不是一回事。create table tab
( id integer not null,
name char(50),
empid char(10),
salary char(15)
);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 tabID 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 nullID NAME EMPID SALARY
----------- -------------------------------------------------- ---------- ---------------
4 KIM 0005 - 1 record(s) selected
对此DB2相关文档给出的答案是,NULL是一个不确定值,可以代表任何值,所以不包括在任何一个指定集合中,并且NULL的值不能通过列值过滤,只能通过IS NULL 或者IS NOT NULL方式过滤,所以上面你可以看到这样的结果,这个貌似和Oracle的不同,所以不同的数据库还是不一样的,不能直接套用,多动手测试,实践出真知。
推荐阅读:DB2数据库性能调整和优化(第1、2版) PDF http://www.linuxidc.com/Linux/2013-09/90679.htmDB2数据库性能优化介绍 http://www.linuxidc.com/Linux/2013-09/90678.htmDB2如何查看日志使用空间DB2的归档模式设置方法相关资讯 DB2
- RHEL5 下安装 DB2 V9.7 数据库 (今 09:39)
- DB2常用脚本整理 (01月19日)
- Linux下DB2SQL1024N A database (01月12日)
| - DB2中REVERSE函数的实现 (01月19日)
- 使用 IBM Data Studio 创建和管理 (01月12日)
- TOAD连接DB2报错SQL1460N解决 (01月12日)
|
本文评论 查看全部评论 (0)