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

回到顶部