T-SQL:选择不等于某个值的行,包括空值
如何选择不等于值并且在返回的数据中包含空值的行? 我已经试过:T-SQL:选择不等于某个值的行,包括空值
SET ANSI_NULLS OFF SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'
我想返回没有“team01”在列assignedByTeam行,但我也希望包含空值的结果。不幸的是,上面的代码不起作用(不返回空值)。
我正在使用MS SQL Server 2008 Express。
回答:
尝试明确检查NULL:
SELECT TOP 30 col1, col2, ..., coln FROM Mails
WHERE (assignedByTeam <> 'team01' OR assignedByTeam IS NULL)
回答:
where column != 'value' or column is null
回答:
SELECT TOP 30 FROM Mails WHERE assignedByTeam <> 'team01'
OR assignedByTeam is null
回答:
当你有很多的条件,打字一切太臭了两次。这里有两个更好的选择:
SELECT TOP 30 FROM Mails WHERE COALESCE(assignedByTeam,'') <> 'team01'
COALESCE运算符返回列表中的第一个非空值。如果assignedByTeam不为null,则它会将assignedByTeam值与'team01'进行比较。但是如果assignedByTeam为null,它将比较一个空白的''到'team01'。它基本上简写如下:
SELECT TOP 30 FROM Mails WHERE (CASE WHEN assignedByTeam IS NULL THEN '' ELSE assignedByTeam END) <> 'team01'
第二种方法是使你的病情的条件,例如:
SELECT TOP 30 FROM Mails WHERE 1 = CASE WHEN assignedByTeam = 'team01' THEN 0 ELSE 1 END
在这个例子中,ELSE值将包括所有的空行,因为他们AREN不等于'team01'。
回答:
SELECT TOP 30 FROM Mails WHERE ISNULL(AssignedByTeam,'') <> 'team01'
我看到一个coalesce语句版本,但ISNULL()更有效。
以上是 T-SQL:选择不等于某个值的行,包括空值 的全部内容, 来源链接: utcz.com/qa/262628.html