答案 0 :(得分:1)
您无法按照here的说明将布尔表达式的结果分配给变量,因此您需要使用按位运算符,并且应使用ISNULL()
而不是IS NULL
。如果第一个参数为null,则ISNULL()
将使用第二个参数,根据要分别检查NOT IS NULL
还是IS NULL
,将其设置为0或1。在下面的示例中,我使用bitwise operator &
而不是AND
或&&
来使表达式返回整数值而不是布尔值
DECLARE @var1 BIT
DECLARE @var2 BIT
DECLARE @result BIT
SET @var1 = (SELECT ...)
SET @var2 = (SELECT ...)
SET @result = (ISNULL(@var1, 0) & ISNULL(@var2, 0))
因此在上面的代码中,如果@var1
或@var2
为null,则@result
将为false,如果两者均为0,则同样如此。
答案 1 :(得分:0)
不确定您的查询是否很好,但是您可以使用CASE WHEN
Set @Cond_Veh_Part = (SELECT
CASE WHEN @VEHKEY IS NOT NULL
AND @PARTKEY IS NOT NULL
THEN 1
ELSE 0
END)
答案 2 :(得分:0)
您可以使用EXISTS
if exists(select Veh_Key from KD_Veh where Veh_Cod = @VehCod)
and exists (select Part_Key from KD_Part where Part_Cod = @PartCod)
set @Cond_Veh_Part = 1
else
set @Cond_Veh_Part = 0
然后可以使用此变量。
If @Cond_Veh_Part = 1
Begin
—do something
End
If @Cond_Veh_Part = 2
Begin
—do something
End