Sql 如何在Where子句中涵盖两种不同的场景

Sql 如何在Where子句中涵盖两种不同的场景,sql,sql-server,select,case,where-clause,Sql,Sql Server,Select,Case,Where Clause,我有一个存储过程,它只有一个参数@tag nvarchar(100)=' 到目前为止,我的WHERE子句用于SELECT这里只是WHERE F.tag=@tag 这将按预期工作,并返回标记(即关键字)与输入参数完全匹配的所有记录 如果输入参数不是空的/'',并且是空的,那么是否有一种方法可以只应用Where子句,然后返回所有记录 在这里,我不能像使用一样使用,因为在匹配的情况下,我只需要精确匹配,所以我正在寻找任何方法在一次选择中涵盖这两种情况,因此,如果提供了标记,请检查匹配,否则返回所有记录

我有一个存储过程,它只有一个参数
@tag nvarchar(100)='

到目前为止,我的
WHERE
子句用于
SELECT
这里只是
WHERE F.tag=@tag

这将按预期工作,并返回标记(即关键字)与输入参数完全匹配的所有记录

如果输入参数不是空的/'',并且是空的,那么是否有一种方法可以只应用Where子句,然后返回所有记录

在这里,我不能像使用一样使用,因为在匹配的情况下,我只需要精确匹配,所以我正在寻找任何方法在一次选择中涵盖这两种情况,因此,如果提供了标记,请检查匹配,否则返回所有记录


有人能告诉我如何做到这一点,例如使用
案例等吗?

这很好,效果很好-没想到会有这么简单的解决方案。:)谢谢!将尽快接受。我建议使用
WHERE(@tag为NULL或@tag=''或F.tag=@tag)
-您还应该检查
是否为NULL
,并且您应该将这三个条件放在括号中,以避免在
WHERE
中的其他条件出现问题!默认值是空字符串。这就是为什么我没有提到nullYes,这也是我的想法。我认为在我的案例中,NULL不需要被覆盖,但总的来说应该知道。
WHERE @tag = '' OR F.tag = @tag