比较SQL中的两个变量

msm*_*cic 5 sql t-sql sql-server-2014

让我们说你有下一个代码:

DECLARE @A INT = 1,
        @B INT = NULL;

IF (@B != @A)
    SELECT 1;
ELSE IF (@B = @A)
    SELECT 2;
ELSE
    SELECT 3;
Run Code Online (Sandbox Code Playgroud)

正如你可以看到变量@A等于'1'肯定而变量@B肯定没有.我正在Microsoft SQL Server Management Studio 2014中执行该部分代码,结果我得到'3'.这意味着@A不一样@B,但它也没有什么不同@B.这怎么可能呢?我在这里错过了什么?

sat*_*esh 8

您无法将null与其他值进行比较.您需要单独处理空值.所以,这将有效

DECLARE @A INT = 1,
        @B INT = NULL;

IF (@B != @A or @B is  null )
    SELECT 1;
ELSE IF (@B = @A)
    SELECT 2;
ELSE
    SELECT 3;
Run Code Online (Sandbox Code Playgroud)