日期:2014-05-17  浏览次数:20731 次

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

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

update  t set AName = case when AName is null then '" + a_Name + "' else AName 
------解决方案--------------------
'
------解决方案--------------------
'
------解决方案--------------------
 '" + a_Name + "' where id ='" + _id + "'";

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



substr() 处理下即可
------解决方案--------------------
上面错了


"update t 
set aname = decode(aname ,null,'" + a_Name + "',aname 
------解决方案--------------------
'
------解决方案--------------------
'
------解决方案--------------------
'" + a_Name + "')
WHERE ID='" + _id + "'";