以下是我需求(如果两者不同则赋值,否则就不做赋值操作)
表:table;列:a;参数:@a
if(a<>@a) set a = @a
else
returnps:不要用一下方法:
update table
set a = @a
where XXX
这个无论a是否等于@a它都会赋值。
表:table;列:a;参数:@a
if(a<>@a) set a = @a
else
returnps:不要用一下方法:
update table
set a = @a
where XXX
这个无论a是否等于@a它都会赋值。
set @a=某值
select
case when a<>@a then set a=@a
end from table_name
你这个需求很模糊,但是我大致了解你的需求了。。我简单的来说一下。
declare @a varchar(50)
declare @b varchar(50)
set @a='a'
--如果a<>@a,你就要给@a 重新赋值,然后update
if (a<>@a)
begin
--你的问题就在,开始的时候就给@a赋值了,然后做判断给@a赋值,结果@a的值还是之前的赋的值,
--uopdte 就有问题了,
--给你说的方法就是声明两个变量,做判断之后就给@b赋值
set @b='b'
update table set 字段=@b
where .......
end
update table
set a = @a
where a <> @a