如何选择不等于价值,也包括在返回的数据空行? 我试过了:
SET ANSI_NULLS OFF
SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'
我想返回没有“team01”列assignedByTeam行,但我也希望包含空值的结果。 不幸的是,上面的代码不工作(不返回空值)。
我使用MS SQL Server 2008 Express的。
如何选择不等于价值,也包括在返回的数据空行? 我试过了:
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)
SELECT TOP 30 FROM Mails
WHERE ISNULL(AssignedByTeam,'') <> 'team01'
我看到一个COALESCE声明版本,但ISNULL()是更有效的。
当你有很多的条件下,输入两遍太臭。 这里有两个更好的选择:
SELECT TOP 30 FROM Mails
WHERE COALESCE(assignedByTeam,'') <> 'team01'
聚结操作返回列表中的第一个非空值。 如果assignedByTeam不为空,它会比较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值将包括所有的空行,因为它们不等于“team01”。
SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'
OR assignedByTeam is null
where column != 'value' or column is null