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 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;
给出这个简单的例子:
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 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;