以下是我需求(如果两者不同则赋值,否则就不做赋值操作)
表:table;列:a;参数:@a
if(a<>@a) set a = @a
else
   returnps:不要用一下方法:
update table
        set a = @a
where XXX
这个无论a是否等于@a它都会赋值。

解决方案 »

  1.   

    declare @a data_type
    set @a=某值
    select 
    case when a<>@a then set a=@a
    end from table_name
      

  2.   


    你这个需求很模糊,但是我大致了解你的需求了。。我简单的来说一下。
    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
      

  3.   

    其實用update也是沒有問題的
    update table
    set a = @a
    where a <> @a