也来说说SQL语句中NULL的真实含义
来源:互联网 发布:jsoup多线程网络爬虫 编辑:程序博客网 时间:2024/05/04 23:39
NULL,表示不明确、未知的列值
测试表:testnull(id varchar(32))
数据库:Sybase ASA11.0
行数据(''), (NULL)
数据库选项ansinull为true(也是ASA数据库的默认选项)时,
select * from testnull where id = null
select * from testnull where id != null
结果均为空
select * from testnull where id is null
结果为(NULL)
select * from testnull where id is not null
结果为('')
当ansinull为false时,
select * from testnull where id = null
结果为(NULL)
select * from testnull where id != null
结果为('')
从上述结果来看,NULL值确实是一个有争议的东西,但是,毫无疑问,ansinull对NULL的定义是精确的,即不能对NULL值进行等于或不等判断,无论是等还是不等,其结果都为false.
而统一的is null, is not null的含义则显然是明确的,NULL is null恒为真,非NULL is null恒为假。
再看看在Oracle中的结果:
SQL> select * from testnull where id is null;
ID
--------------------------------
SQL> select * from testnull where id is not null;
no rows selected
SQL> select * from testnull where id=null;
no rows selected
SQL> select * from testnull where id != null;
no rows selected
空字符串''在oracle中被示为NULL值了。比较怪异。
Oracle这种现象的重现过程如下:
SQL> create table testnull(id varchar(32));
Table created.
SQL> insert into testnull values('');
1 row created.
SQL> select * from testnull where id is null;
ID
----------------------------------------------------------------
SQL> select count(*) from testnull where id is null;
COUNT(*)
----------
1
SQL>
- 也来说说SQL语句中NULL的真实含义
- SQL语句中NULL的真实含义
- 我也来说说.net的定位
- 也来说说程序员的年龄问题
- 也来说说Ajax的事儿
- 也来说说“忠”
- 也来说说厕所
- 也来说说全局变量
- 也来说说心灵鸡汤
- 也来说说全局变量
- 也来说说C语言
- 我也来说说多核
- 也来说说JAVA NIO
- 爆笑QQ资料。顺便也来说说自己的,如何?
- 爆笑QQ资料。顺便也来说说自己的,如何?
- 我也来说说winsock最简单的编程
- SQL语句中null的应用。
- 忍受不住了,也来说说老虎
- Mac OS X: 系统nvram启动参数
- 【创业指南】红杉基金对创业项目的要求 - 译言翻译
- 工作日记
- Linux Socket编程bash服务程序
- YUI DataTable 服务器端翻页与排序
- 也来说说SQL语句中NULL的真实含义
- 开机启动跳过“用户名密码输入”
- JCo–在Java中调用ABAP服务
- 在.Net中关于AOP的实现 (一)
- 服务端TextBox焦点事件
- 在.Net中关于AOP的实现(二)
- “天鹅”类谜解大全!-
- 在.Net中关于AOP的实现(三)
- 利用 AOP 实现 .NET 上完整的基于角色的访问控制(RBAC)模型