将直接比较中的布尔结果保存到变量中

时间:2018-11-05 17:16:08

标签: sql sql-server

我正在尝试将比较结果保存在变量中。

我想使用下面的示例来代替(IF X = 1 BEGIN @Cond_JaCadastrado = 1 END)。但是我没有找到解决方法。

有人知道如何进行吗? Comparition

3 个答案:

答案 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