这不是一个问题,而是我最近学到的一些让我疯狂的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。
就像我说的那样,大多数人可能已经知道这一点,但也许它会对某人有所帮助。
答案 0 :(得分:0)
正如评论者所建议的那样,正确的方法是使用类似的东西:
SET @field2 = (SELECT field2 FROM test1 WHERE field1 = 'worldhello');
请参阅其他评论以获得解释。