代码之家  ›  专栏  ›  技术社区  ›  Jacques

在WHERE子句中使用LIKE的Microsoft SQL CASE语句

sql
  •  0
  • Jacques  · 技术社区  · 14 年前

    我曾经使用过这样一个场景,我执行了一个SQL WHERE子句: 在哪里? branchname=case当@pbranch<gt;''然后@pbranch else branchname结束

    这意味着我们正在进行分支名称查找,但是这个语句必须以某种方式满足LIKE子句。我们需要能够说“如果提供了pbranch参数,那么执行类似的搜索,否则忽略WHERE子句的那部分。”

    有什么线索吗?

    谢谢, 雅克

    4 回复  |  直到 14 年前
        1
  •  1
  •   Brett    14 年前

    你可以说:

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

    这基本上表示,如果将“”传递到@pbranch,则将显示所有结果,否则,如果传递其他内容,则将按参数搜索

        2
  •  0
  •   Charles Bretana    14 年前

    尝试

    Where BranchName Like IsNull(@Branch, BranchName)
    
        3
  •  0
  •   Jacques    14 年前

    实际上,我想我想要的答案是:

    … 在哪里? o.branchname类似于case,当@pbranchname<gt;''时,然后是@pbranchname else o.branchname end …

        4
  •  0
  •   user158017    14 年前
    where @pBranch = '' or BranchName like @pBranch
    

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

    这对数字有效,而不仅仅是字符串-因此,如果将int参数作为0或值传递,则可以执行以下操作:

    where @param = 0 or DBField = @param