给出这个简单的例子:
DECLARE @aux INT
SET @aux = NULL
SELECT
CASE WHEN @aux = NULL THEN 'null' ELSE 'not null' END AS ETest,
CASE WHEN @aux <> NULL THEN 'not null' ELSE 'null' END AS ITest;
我期待结果:ETEST null,ITEST NULL,显然这是错误的,我需要一个提示来找到我的逻辑失败的地方。
答案 0 :(得分:4)
您不能将运算符用作<>
和=
来验证null
值。您必须使用IS NULL
或IS NOT NULL
,如下所示
DECLARE @aux INT
SET @aux = NULL
SELECT
CASE WHEN @aux IS NULL THEN 'null' ELSE 'not null' END AS ETest,
CASE WHEN @aux IS NOT NULL THEN 'not null' ELSE 'null' END AS ITest;