SQL Server 选择没有结果的变量

pro*_*ica 5 sql t-sql sql-server

如果查询没有返回结果,我可以设置变量吗?

DECLARE @Output AS VARCHAR(MAX);

SELECT @Output = 'Old';
SELECT @Output = 'New' WHERE 0 = 1;

PRINT @Output;
Run Code Online (Sandbox Code Playgroud)

输出值为:

预期值为:NULL

Sam*_*ami 6

DECLARE @Output AS VARCHAR(MAX);
SELECT @Output = 'Old';
SELECT @Output = 'New' WHERE 0 = 1;
PRINT @Output;
Run Code Online (Sandbox Code Playgroud)

你得到'Old'原因是变量已经有这个值,它不会更新值,因为在WHERE子句中你使用了 condition 0=1,它会返回FALSE并且变量中的值不会改变。

WHERE 0 = 1 这将是假的

WHERE 0 <> 1 这将是真的

它只是类似于 IF 0=1 THEN UpdateMyVar

所以你的情况的值将始终'Old',它不会返回'New'NULL两种。

我不知道你有什么做的真的,但如果你想返回NULL

DECLARE @Output AS VARCHAR(MAX);
SELECT @Output = 'Old';
SELECT @Output = NULL WHERE 0 <> 1; --If 0<> 1 then update my var and set NULL else leave it as it is
PRINT @Output;
Run Code Online (Sandbox Code Playgroud)