使用CASE选择NULL字段的查询过滤器[SQL Server]

时间:2016-09-27 09:52:51

标签: sql sql-server

如何使用CASE WHEN语句将其简化为一个WHERE子句:

@param varchar(1) NULL

if @param = 'Y'
  ... WHERE field = @param
else if @param = 'N'
  ... WHERE field = @param OR field IS NULL

提前致谢

3 个答案:

答案 0 :(得分:0)

像这样:没有CASE Expression

{{1}}

答案 1 :(得分:0)

我认为这样做会:

WHERE field = @param OR (@param = 'N' AND field IS NULL)

答案 2 :(得分:0)

您可以使用coalesce进行简化,假设应为“N”参数检查NULL字段。

where coalesce(field, 'N') = @param

当然,如果@param可能不是'Y'或'N',那么这可能会导致奇怪的结果