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

时间:2015-04-27 08:54:32

标签: sql sql-server tsql variables case

给出这个简单的例子:

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

1 个答案:

答案 0 :(得分:4)

您不能将运算符用作<>=来验证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;