ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL语句中NULL的真实含义

SQL语句中NULL的真实含义

原创 Linux操作系统 作者:iSQlServer 时间:2009-02-02 14:31:38 0 删除 编辑

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值了。比较怪异。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-545036/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2088181