select * from 表 where 字段 is null
 Transact-SQL 参考  
IS [NOT] NULL
确定一个给定的表达式是否为 NULL。语法
expression IS [ NOT ] NULL参数
expression是任何有效的 Microsoft® SQL Server™ 表达式。 NOT指定布尔结果取反。谓词反转其返回值,值不为 NULL 时返回 TRUE,值为 NULL 时返回 FALSE。结果类型
布尔型返回代码值
如果 expression 的值是 NULL,则 IS NULL 返回 TRUE;否则,返回 FALSE。如果 expression 的值是 NULL,则 IS NOT NULL 返回 FALSE;否则,返回 TRUE。注释
若要确定表达式是否为 NULL,请使用 IS NULL 或 IS NOT NULL,而不要用比较运算符(例如 = 或 !=)。如果有一个参数为 NULL 或两个参数都为 NULL,那么比较运算符返回 UNKNOWN。 示例
在下面的示例中,对于所有预付款少于 $5,000 或者预付款未知(或为 NULL)的书,返回它们的书号及预付款。请注意,显示的结果是在示例 C 执行后所返回的那些结果。USE pubs
SELECT title_id, advance
FROM titles
WHERE advance < $5000 OR advance IS NULL
ORDER BY title_id下面是结果集:title_id advance                    
-------- -------------------------- 
MC2222   0.0000                     
MC3026   NULL                       
PC9999   NULL                       
PS2091   2275.0000                  
PS3333   2000.0000                  
PS7777   4000.0000                  
TC4203   4000.0000                  (7 row(s) affected)
请参见CASECREATE PROCEDURECREATE TABLE数据类型表达式INSERTLIKE空值运算符(逻辑运算符)SELECTsp_help UPDATEWHERE&copy;1988-2000 Microsoft Corporation。保留所有权利。

解决方案 »

  1.   

    我有70个字段,是否每个字段都要加上一个  or is null 的判断,这样好像太麻烦了 :(
      

  2.   

    select * from yourtable where colname is null
      

  3.   

    给字段都加上缺省值
    到时候就不会出现烦人的NULL了
      

  4.   

    select nvl(colname, '') from table;
      

  5.   

    declare @Str varchar(8000),@s varchar(25)
    set @str=''
    set @S=''
    declare a cursor for 
      select a.name from syscolumns a,sysobjects b where a.id=b.id and b.name='t'
    open a 
    fetch next from a into @s
    while @@fetch_status<>0
    begin
     set @s=@s+' is null'
     set @str=@str+'or'+@s
     fetch next from a into @s
    endexec('select * from yourtable where '+@str)
      

  6.   

    加上缺省值,
    或使用null(columnname,'')替换