如何在sql脚本中过滤不包含任何列null

时间:2010-11-04 14:29:38

标签: sql sql-server scripting

想象有50列。我不希望任何包含空值的行。有什么棘手的方法吗?

SQL 2005服务器

4 个答案:

答案 0 :(得分:4)

对不起,不是真的。必须以一种或另一种形式检查所有50列。

Column1 IS NOT NULL AND ... AND Column50 IS NOT NULL

当然,在这些条件下,为什么不通过在表定义中使用NOT NULL来首先禁止NULL

答案 1 :(得分:1)

如果是SQL Server 2005+,您可以执行以下操作:

SELECT fields
FROM MyTable
WHERE stuff
EXCEPT -- This excludes the below results
SELECT fields
FROM MyTable
WHERE (Col1 + Col2 + Col3....) IS NULL

为值添加null会导致null,因此所有列的总和将为NULL
这可能需要根据您的数据类型进行更改,但将NULL添加到char / varchar或数字将导致另一个NULL

答案 2 :(得分:0)

如果您查看的值不是null,可以在select语句中执行此操作。

SELECT ISNULL(firstname,''),ISNULL(lastname,'')FROM TABLE WHERE SOMETHING = 1

这将使用字符串空格替换空值。如果你想要另一个值,可以使用:ISNULL(firstname,'e​​mpty')。你可以使用任何单词为空的东西。

答案 3 :(得分:-1)

我更喜欢这个查询

select *
from table
where column1>''
and column2>''
and (column3>'' or column3<'')

如果存在正确的索引/ es,则允许sql server使用索引查找。您必须为第3列执行可能为负数的任何数值的syntext。