使用BIT数据类型过滤WHERE子句中的查询

时间:2015-11-18 15:08:52

标签: sql sql-server null

我正在构建一个使用位参数的存储过程。 此位参数用于过滤电子邮件列。

如果@param为1 - 显示所有有电子邮件的客户。

如果@param为0 - 显示没有电子邮件的所有客户。

如果@param为null(未传递给程序) - 显示有或没有电子邮件的客户端。

不太顺利。有什么建议吗?

where case @email when 1 then email is not null
                 when 0 then email is null)

1 个答案:

答案 0 :(得分:5)

使用简单的OR

WHERE (@param IS NULL)
   OR (@param = 1 AND email IS NOT NULL)
   OR (@param = 0 AND email IS NULL)