首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在不遍历每个字段的情况下, 能否直接取出表中任意字段为null的记录解决方法

2012-01-22 
在不遍历每个字段的情况下, 能否直接取出表中任意字段为null的记录前提条件就是不遍历表中的字段(不能wher

在不遍历每个字段的情况下, 能否直接取出表中任意字段为null的记录
前提条件就是不遍历表中的字段
(不能where   field1   is   null   or   field2   is   null...)

比如table1

1                               2                           null
2                               3                           4
null                         1                           3
null                         5                           null
2                               3                           1


我想用sql把第1,   3,   4条记录取出来
请问这种sql有可能写出来吗?

[解决办法]
where field1 not null and field2 not null.....哈哈哈
[解决办法]
不遍历比较困难

select * from table1 where (field1+field2+field3) is null
[解决办法]
不遍历字段挺困难的样子...
[解决办法]
请问各位大虾 什么叫历表
[解决办法]
select * from table1
where (field1+field2+field3) is null即可
换成乘*号也可以

因为作为数字类型字段的field1+field2+field3中只要有一个为null,那么他们相加的结果就会为null
[解决办法]
加减乘除均可
[解决办法]
换一种思路就很好办了,把null全部改成‘’不就可以了吗?
[解决办法]
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)
END

GO

--说明:该存储过程需要指定表的主键字段,与其它字段无关.
--查询的时候.只需要指名表名即可.

exec UP_CHECKnull '表名 '


热点排行