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

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

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

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

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

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

最佳答案

使用简单的 OR :

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

关于sql - 使用 BIT 数据类型过滤 WHERE 子句中的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33783576/

10-13 06:09