【问题标题】:How to cover two different scenarios in Where clause如何在 Where 子句中覆盖两种不同的场景
【发布时间】:2014-10-17 22:51:21
【问题描述】:

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

到目前为止,我的SELECTWHERE 子句只是WHERE F.tag = @tag

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

如果输入参数不为空 / '' 并且如果是则返回所有记录,我是否只能应用此 Where 子句?

我不能在这里使用LIKE,因为在匹配的情况下我只需要完全匹配,所以我正在寻找任何方法来在一个选择中涵盖这两种情况,所以如果提供了标签,要么检查匹配,否则返回所有记录.

谁能告诉我如何做到这一点,例如通过使用CASE 等?

【问题讨论】:

    标签: sql sql-server select case where-clause


    【解决方案1】:
    WHERE @tag = '' OR F.tag = @tag
    

    【讨论】:

    • 这很棒而且效果很好 - 没想到这么简单的解决方案。 :) 非常感谢 !我会尽快接受。
    • 我建议使用WHERE (@tag IS NULL OR @tag = '' OR F.tag = @tag) - 您还应该检查IS NULL,并且您应该将这三个条件放在括号中以避免与WHERE 子句中的其他条件发生问题
    • 也谢谢你!
    • 嗯,默认是空字符串。这就是为什么我没有提到 null
    • 是的,这也是我的想法。我认为在我的情况下 NULL 不需要被覆盖,但总的来说很高兴知道。
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2022-09-26
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多