前提条件就是不遍历表中的字段
(不能where field1 is null or field2 is null...)比如table11               2             null
2               3             4
null            1             3
null            5             null
2               3             1
我想用sql把第1, 3, 4条记录取出来
请问这种sql有可能写出来吗?

解决方案 »

  1.   

    where field1 not null and field2 not null.....哈哈哈
      

  2.   

    不遍历比较困难select * from table1 where (field1+field2+field3) is null
      

  3.   

    select * from table1 
    where (field1+field2+field3) is null即可
    换成乘*号也可以因为作为数字类型字段的field1+field2+field3中只要有一个为null,那么他们相加的结果就会为null
      

  4.   

    换一种思路就很好办了,把null全部改成‘’不就可以了吗?
      

  5.   

    ALTER PROC UP_CHECKnull
    @Table VARCHAR(100)
    AS
    BEGIN
    DECLARE @S VARCHAR(8000)
    SET @S=''
    SELECT @S=@S+' AND ISNULL('+NAME+','''')<>'''' ' FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@Table+'')
    ORDER BY COLORDER
    Set @S=Stuff(@S,1,5,'')
    SET @S='SELECT * FROM '+@Table+' WHERE 主键字段 NOT IN (SELECT 主键字段 FROM '+@Table+' WHERE '+@S+')'
    EXEC(@S)
    ENDGO--说明:该存储过程需要指定表的主键字段,与其它字段无关.
    --查询的时候.只需要指名表名即可.exec UP_CHECKnull '表名'