where子句中的大小写[英] Case inside where clause

本文是小编为大家收集整理的关于where子句中的大小写的处理方法,想解了where子句中的大小写的问题怎么解决?where子句中的大小写问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

朋友们,
我试图在 where 子句中使用 case 语句,它决定是否应该使用条件来根据参数过滤数据.

我正在尝试以下操作:

Select * 
FROM FWB_SF_Opportunity B 
left join FWB_VWSFData A ON A.opportunityid=B.id and ReviewMonth=@ReviewMonth  
AND A.VCID = isnull(@VCID,A.VCID)  
WHERE case when @vcid <> '''' then A.VCID = @VCID end


它给了我以下错误:
<br />
Msg 102, Level 15, State 1, Line 35<br />
Incorrect syntax near ''=''.<br />


如何将 A.VCID = @VCID 条件放在 case 语句中

提前致谢

推荐答案

试试这个:
这对你有用.
FROM FWB_SF_Opportunity B left 加入 FWB_VWSFData A ON A.opportunityid=B.id  ReviewMonth=@ReviewMonthWHERE A.VCID = (case when@vcid <> ''then @VCID end)


祝你好运.

嘿试试下面的查询:-

声明 @vcid intset @vcid= '' --无过滤器set @vcid= 100 -- 用于过滤器选择 *FROM FWB_SF_Opportunity B left 加入 FWB_VWSFData AON A.opportunityid=B.id and ReviewMonth=@ReviewMonthWHERE @vcid = case @vcid when '' then @vcid else A.VCID end

SELECT * FROM FWB_SF_Opportunity B left 加入 FWB_VWSFData A ON A.opportunityid=B.id and ReviewMonth=@回顾月WHERE A.VCID = ISNULL(@VCID,A.VCID)


试试这个.可能有帮助,我没有测试过.

我有另一个解决方案:- 如果您的代码在一个过程中,那么在放置您的代码之前,您可以通过 IF ELSE 条件检查@VCID 是否为空

本文地址:https://www.itbaoku.cn/post/1356106.html