表t1,内有字段id(关键字),需更新的字段aName,aName原来可能为空,也可能有内容,如果为空,可以用以下语句实现:"UPDATE t SET AName='" + a_Name + "' WHERE ID='" + _id + "'";如果不为空时,需将新增加的内容加在aName后面,之间用|隔开,现求一语句能同时实现aName原来可能为空,也可能有内容两种情况的。
     如果用其他方法,我也可以实现,如,先查询aName是否为空,为空则直接更新,否则将取出的aName再与加入的内容组合(中间加|),再更新即可。
     现在想求一精炼语句,能同时实现aName原来可能为空,也可能有内容两种情况的。请大虾指点,谢谢

解决方案 »

  1.   

    NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
      

  2.   


    update  t set AName = case when AName is null then '" + a_Name + "' else AName ||'|'|| '" + a_Name + "' where id ='" + _id + "'";
      

  3.   

    自己解决了,但是不是很完美,update  t set AName = AName || "|'" + a_Name + ''' + where id ='" + _id + "' ,当字段为空时,前面会多一个“|”,怎么去掉呢?
      

  4.   


    "update t 
    set aname = decode(name,null,'" + a_Name + "',name||'|'||'" + a_Name + "')
    WHERE ID='" + _id + "'";
      

  5.   

    上面错了
    "update t 
    set aname = decode(aname ,null,'" + a_Name + "',aname ||'|'||'" + a_Name + "')
    WHERE ID='" + _id + "'";