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