【问题标题】:Microsoft SQL CASE statement in where clause using LIKE使用 LIKE 的 where 子句中的 Microsoft SQL CASE 语句
【发布时间】:2023-03-12 01:45:01
【问题描述】:

我曾经使用过这样一个场景,我执行了这样的 SQL where 子句: 在哪里 BranchName = CASE WHEN @pBranch '' 然后 @pBranch else BranchName end

这就是说我们正在做一个分支名称查找,但是这个语句必须以某种方式迎合 LIKE 子句。我们需要能够说'如果提供了 pBranch 参数,则进行类似搜索,否则忽略 WHERE 子句的那部分。

有什么线索吗?

谢谢, 雅克

【问题讨论】:

    标签: sql


    【解决方案1】:
    where @pBranch = '' or BranchName like @pBranch
    

    (将通配符添加到like子句的适当位置)

    这将适用于数字,而不仅仅是字符串 - 所以如果你将 int 参数作为 0 或值传递,你会这样做:

    where @param = 0 or DBField = @param
    

    【讨论】:

      【解决方案2】:

      其实我想我一直在寻找的答案如下:

      ... 在哪里 o.BranchName 类似于@pBranchName '' 然后@pBranchName else o.BranchName end ...

      【讨论】:

      • 我认为这应该与我上面发布的内容完全相同,因为如果您传入 '' 则返回所有内容,否则您将按 @pBranchName 过滤
      【解决方案3】:

      你可以说:

      SELECT *
      FROM dbo
      WHERE @pBranch = '' OR BranchName = @pBranch
      

      这基本上是说如果你将''传递给@pBranch,那么所有结果都会显示出来,否则,如果你传入其他东西,它将根据你的参数进行搜索

      【讨论】:

      • 哎呀——我发帖子的时候没看到你的帖子。但这是我对正确答案的想法! :-)
      【解决方案4】:

      试试

      Where BranchName Like IsNull(@Branch, BranchName)
      

      【讨论】:

        猜你喜欢
        • 2012-01-07
        • 2020-03-26
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        相关资源
        最近更新 更多