SQL选择Null和0值(范围为null,0和1)中的值

时间:2019-02-24 18:45:21

标签: sql sql-server

T-SQL查询返回的列之一具有这三个值之一

MEAN(transactions.product.SUM(amount))

我试图过滤掉1个值,但是当我使用这些子句时:

查询:

NULL, 0, 1

条款:

  1. select foo from dbo.table1 where .. :仅返回列中值为0的数据
  2. where foo <> 1:仅返回列中的空值
  3. Where foo is null:仅返回列中值为0的数据

什么是过滤数据的正确方法?

2 个答案:

答案 0 :(得分:5)

在SQL Server中,您可以执行以下操作:

where foo <> 1 or foo is null

或者,如果您知道确实只有三个值,则类似:

where coalesce(foo, -1) <> 1

SQL Server没有NULL安全比较。标准SQL支持:

where foo is distinct from 1

但是在SQL Server中不可用。

答案 1 :(得分:5)

由于只有3个值,这就足够了:

where isnull(foo, 0) <> 1

或:

where isnull(foo, 0) = 0