我有四列名称Level1, Level2, Level3
,默认为空值,我想检索所有没有Level1, Level 2, Level 3
完成的行。
这是我的查询但不提取任何值。请帮帮我
select name from table
where Level1 <>'Completed' and Level2 <> 'Completed and Level3 <> 'Completed'
或
select name from table
where Level1 <>'Completed' or Level2 <> 'Completed or Level3 <> 'Completed' .
但它没有获取任何行。 <>
运算符或NULL
值是否存在问题?
答案 0 :(得分:3)
对于空值,您应使用value is not null
或value is null
答案 1 :(得分:1)
由于您需要单独处理NULL
“非值”,请尝试以下方法:
SELECT name
FROM dbo.table
WHERE ISNULL(Level1, 'null') <> 'Completed'
AND ISNULL(Level2, 'null') <> 'Completed'
AND ISNULL(Level3, 'null') <> 'Completed'
如果其中一列是NULL
,那么NULL
将被替换为您传递给ISNULL()
的第二个句子的任何值 - 并且因为我正在替换{ {1}}使用'null'字符串 - 它不等于NULL
并将被选中。
答案 2 :(得分:0)
具有NULL的列意味着列值未知或不可用。 NULL不等于0或零长度字符串。
要根据NULL值过滤行,您必须使用IS NULL
或IS NOT NULL
要查找任何一列为NULL的行,您可以使用以下查询:
Select *
From YourTable
Where Level1 Is Null Or Level2 Is Null Or Level3 Is Null
在MS SQL Server中查看此MSDN Article for a full explanation of NULL Comparisions