SQL Server在预期为null时选择变量not null(info)

时间:2018-03-25 12:31:36

标签: sql-server select

这不是一个问题,而是我最近学到的一些让我疯狂的SQL Server信息。我相信很多其他人(大多数?)在这里已经知道了,但为了以防万一,也许它会节省一些时间的调试。举个例子:

create table test1 (field1 varchar(16), field2 int);
insert into test1 values ('helloworld', 1);
declare @field2 int;
select @field2 = field2 from test1 where field1 = 'helloworld';
select @field2 'firstTime';
select @field2 = field2 from test1 where field1 = 'worldhello';
select @field2 'secondTime';

我希望 secondTime 为null,因为找不到该行。但事实上它从之前的选择中延续下来!您需要使用if exists或在第二次选择之前设置@ field2 = null。

就像我说的那样,大多数人可能已经知道这一点,但也许它会对某人有所帮助。

1 个答案:

答案 0 :(得分:0)

正如评论者所建议的那样,正确的方法是使用类似的东西:

SET @field2 = (SELECT field2 FROM test1 WHERE field1 = 'worldhello');

请参阅其他评论以获得解释。