Ari*_*MAZ 0 sql sql-server select
在SQL Server中,如果SELECT子查询中的语句没有返回任何行,那么子查询的结果是否等于NULL?我做了一些研究,但我不确定.
例:
IF (SELECT TOP 1 CLMN1 FROM SOMETABLE) IS NOT NULL THEN
....
Run Code Online (Sandbox Code Playgroud)
我要求了解上面if语句的行为.
看起来答案是肯定的:
DECLARE @Test TABLE (Id INT)
INSERT INTO @Test VALUES (1)
SELECT * FROM @Test WHERE Id = 2
SELECT CASE WHEN (SELECT * FROM @Test WHERE Id = 2) IS NULL THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)
编辑:在你更新你的问题后,我想我应该添加,而不是检查是否有IS NULL的行,你应该使用以下可以由服务器更好地优化:
IF EXISTS(SELECT * FROM @Test WHERE Id = 2)
BEGIN
-- Whatever
END
Run Code Online (Sandbox Code Playgroud)