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

在where子句中使用LIKE的Microsoft SQL CASE语句,sql,Sql,我曾经使用过一个场景,其中我执行了一个SQL where子句,如下所示: 哪里 BranchName=当@pBranch“”时的情况,然后@pBranch else BranchName结束 也就是说,我们正在进行分支名称查找,但该语句必须以某种方式满足LIKE子句。我们需要能够说‘如果提供了pBranch参数,那么执行类似的搜索,否则忽略WHERE子句的这一部分 有什么线索吗 谢谢, 雅克试试看 Where BranchName Like IsNull(@Branch, BranchName)

我曾经使用过一个场景,其中我执行了一个SQL where子句,如下所示: 哪里 BranchName=当@pBranch“”时的情况,然后@pBranch else BranchName结束

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

有什么线索吗

谢谢, 雅克

试试看

Where BranchName Like IsNull(@Branch, BranchName)
你可以说:

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

这基本上是说,如果您将“”传递给@pBranch,那么所有结果都将显示,否则,如果您传递其他内容,它将通过您的参数进行搜索

事实上,我认为我正在寻找的答案如下所示:

。。。 哪里 o、 当@pBranchName“”然后@pBranchName else o.BranchName结束时,类似BranchName的情况

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

这将适用于数字,而不仅仅是字符串-因此,如果您将int参数作为0或值传入,您将执行以下操作:

where @param = 0 or DBField = @param

我认为这应该和我上面发布的内容完全一样,因为如果你传入“”,那么你会返回所有内容,否则你会通过@pBranchNameoops进行过滤-我发布我的帖子时没有看到你的帖子。但这是我对正确答案的看法!:-)
where @param = 0 or DBField = @param