select * from tab where isnull(a,'')<>''

解决方案 »

  1.   

    SET ANSI_NULLS
    指定在对空值使用等于 (=) 和不等于 (<>) 比较运算符时,这些运算符的 SQL-92 遵从行为。语法
    SET ANSI_NULLS {ON | OFF}注释
    SQL-92 标准要求对空值的等于 (=) 或不等于 (<>) 比较取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中存在空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中存在非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍返回零行。当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中含有空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中含有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有非 XYZ 值和非 NULL的行。
      

  2.   

    select * from tab where a=NULL
      

  3.   

    select * from tab where a is NULL
      

  4.   

    isnull()函数,如果sal的值为空,那么用0来替换。否则,原样sal值。
    /*说明空值是不能进行比较的*/
    if(null=null) 
    print 'ok'
    else
    print 'no'
    go
    所以,不能使用比较运算符。
    还有 ''俩引号并不是空值,它的ascii码等于0。可以进行比较。
      

  5.   

    isnull(sal, 0)函数,如果sal的值为空,那么用0来替换。否则,原样sal值。
      

  6.   

    select * from tab where isnull(a,'')<>''
    正解.
    如果字段a为null,转换为'',这样才可以使用<>''
      

  7.   

    select * from tab where isnull(a,'')<>''
    正解.
    如果字段a为null,转换为'',这样才可以使用<>''
    回楼上的:因为a为null是被转换成了ascii码的0,所以是用0来进行比较。当然可以用。
    if isnul('',1)=0
      print 'ok'
    else 
      print 'no'
    go
      

  8.   

    select * from tab where isnull(a,'')<>''
    正解
      

  9.   

    select * from tab where a is NULL