update tblA set Age=decode(Name,'AA','20','BB','30','CC','40')
 where Name in ('AA','BB','CC');

解决方案 »

  1.   

    update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40')
      

  2.   

    要用onejune4450(中文字符)的
    wangybyangxr(王永斌)的句子少个条件,会造成将NAME非'AA','BB','CC'的AGE更新为NULL
      

  3.   

    谢谢ORARichard(没钱的日子......)的提醒。 update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', '') 最后一个空格表示与前面不匹配的话用 DEFAULT
      

  4.   

    赞同ORARichard and onejune4450
      

  5.   

    update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', '')
      

  6.   

    update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', Age)
      

  7.   

    update tblA set Age = DECODE(NAME,'AA','20', 'BB','30', 'CC','40', Age)to libin_ftsafe(子陌红尘) 
    你这句话的确没错了,不过如果表中有百万条数据,那岂不是要更新百万条了,最好的方法还是一楼的to wangybyangxr(王永斌) 
    你写的第二句还是有问题,你参照libin_ftsafe(子陌红尘)的句子再想想
      

  8.   

    谢谢ORARichard(没钱的日子......)的提醒。
      

  9.   

    其实为了适应开发的要求 最好把它放到一个存储过程中这样可以避免很多问题
    如 create or replace procedure updatetblA(v_Age1 in varchar2,v_Age2 in varchar2,v_Age3 in varchar2)
    begin
     update tblA set Age=v_Age1 where Name='AA'; 
     update tblA set Age=v_Age2 where Name='BB';
     update tblA set Age=v_Age3 where Name='CC';
     /*如果要求必须都执行的话加上
     commit*/
    end;
     
      

  10.   

    默认值是null还是age看具体情况了