想象有50列。我不希望任何包含空值的行。有什么棘手的方法吗?
SQL 2005服务器
答案 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,'empty')。你可以使用任何单词为空的东西。
答案 3 :(得分:-1)
我更喜欢这个查询
select *
from table
where column1>''
and column2>''
and (column3>'' or column3<'')
如果存在正确的索引/ es,则允许sql server使用索引查找。您必须为第3列执行可能为负数的任何数值的syntext。