Transact-SQL 带有 case 语句的局部变量

Transact-SQL local variable with case statement

给出这个简单的例子:

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,显然这是错误的,我需要一个提示来找出我的逻辑在哪里失败。

您不能将运算符用作 <>= 来验证 null 值。您必须使用 IS NULLIS 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;