【发布时间】:2015-11-04 23:03:17
【问题描述】:
假设你有下一个代码:
DECLARE @A INT = 1,
@B INT = NULL;
IF (@B != @A)
SELECT 1;
ELSE IF (@B = @A)
SELECT 2;
ELSE
SELECT 3;
如您所见,变量@A 肯定等于'1',而变量@B 肯定不等于。我正在 Microsoft SQL Server Management Studio 2014 中执行那部分代码,结果得到 '3'。这意味着@A 与@B 不同,但它也与@B 没有区别。这怎么可能呢?我在这里错过了什么?
【问题讨论】:
-
您缺少对
NULL值的理解。几乎所有与NULL的比较都会返回NULL,它被视为假。这在 SQL、文档和其他 Stack Overflow 问题的学习材料中都有介绍。 -
另一个关于与
NULL值比较的好/酷的事情可以在awesome answer here 中找到。 -
比较 NULL 的唯一方法是使用
IS NULL/IS NOT NULL运算符 -
@GordonLinoff 谢谢,我想我错过了一些基本的东西。 =/
标签: sql tsql sql-server-2014