为什么列a + = @value不等于SQL Server 2008中的列a =列a + @value?

时间:2013-02-24 12:21:20

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我编写了一个存储过程来更新表中的数据。它看起来像这样:

UPDATE dbo.sample
SET column_a += @value
WHERE id = @id

我发现它首先没有总和更新。结果如下面的命令:

UPDATE dbo.sample
SET column_a = @value
WHERE id = @id

我必须使用SET column_a = column_a + @value才能正确更新。我想知道为什么SQL Server在分配到左侧之前不对右侧的表达式求和。我测试了变量,它的工作原理。它只在这种情况下不起作用。

我现在使用的命令是:

UPDATE dbo.sample
SET column_a = column_a + @value
WHERE id = @id

2 个答案:

答案 0 :(得分:1)

我尝试了以下脚本。它对我来说很好。

我建议你尝试一次。如果问题仍然存在,请告诉我。

create table #temp1(id int, prodName varchar(max))

insert into #temp1 values(1,'a')
insert into #temp1 values(2,'b')
insert into #temp1 values(3,'c')
insert into #temp1 values(4,'d')

select * from #temp1

declare @var varchar(1);
set @var = '5'; --note that i even tried declaring it as a varchar. it still works!
update #temp1
set id +=@var

select * from #temp1

drop table #temp1

答案 1 :(得分:0)

  SQL Server 2008中

column_a + = @value 等于 column_a = column_a + @value

它只是第一个很短