易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL语句中NULL的真实含义

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>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iihero/archive/2009/01/23/3851566.aspx


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

SQL Server数据库碎片

当索引所在页面的基于主关键字的逻辑顺序,和数据文件中的物理顺序不匹配时,碎片就产生了。所有的叶级页包含了指向前一个和后一个页的指针。这样就形成一个双链表。理想情况下,数据文件中页的物理顺序会和逻辑顺序匹配。整个磁盘的工作性能在物理顺序匹配逻辑顺序时将显著提升。对某些特定的查询而言,这将带来极佳的性能 ......

SQL 速查手册

--SQL 速查手册
/*******************************************/
SELECT
--用途:从指定表中取出指定列的数据
--语法:
SELECT column_name(s) from table_name
--主要字句可摘要为:
SELECT select_list [INTO new_table]
from table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING s ......

SQL Server中CASE的用法


    以前对于Sql Server中Case命令的用法一直不是很了解,今天通过上网查了一些资料,将Case基本的用法总结一下。
Case命令有两种语法: 
A)CASE<运算式>
WHEN <运算式> THEN <运算式>
……
WHEN <运算式> THEN <运算式>
[ELSE<运算式> ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号