如何在where子句中获取空值[英] How to get null values in where clause

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

问题描述

朋友们好,

我有两张桌子

1. FWB_SF_Opportunity (Does not contain VCID)<br />
2. FWB_VWSFData (Contains column VCID)


我用以下查询制作了 SP:
SELECT * FROM (SELECT * FROM FWB_SF_Opportunity Bleft join FWB_VWSFData A ON A.opportunityid=B.id  ReviewMonth=@ReviewMonth) Twhere T.VCID = isnull(@vcid,T.vcid)


参数@VCID可以取值5(vcid = 5的记录)或null(获取所有记录,包括值为null的VCID)

问题是当 @VCID = NULL 时,结果应该包含所有记录以及值为空的 VCID.但是在这种情况下 where 条件不成立,它只给出 VCID = 5 且不为空的记录.

有什么解决办法吗?

在此先感谢

推荐答案

AFAIK,要么你必须有一个重复的代码来实现它,要么你可以传递其他东西以防你的代码为 NULL(在查询期间参数创建)并处理 SP 中的已知值,例如当它为 NULL 时传递 -1.这将确保您的查询参数始终具有根据您的需要导致查询结果的有效值.

我尝试关注


SELECT * FROM (SELECT * FROM FWB_SF_Opportunity Bleft join FWB_VWSFData A ON A.opportunityid=B.id and ReviewMonth=@ReviewMonth) T在哪里((isnull(@VCID,'') = '' AND 1 = 1)(isnull(@VCID,'') <> '' AND T.VCID = @VCID))


而且效果很好
希望遇到同样情况的小伙伴们帮忙看看

快乐编码:)

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