求一条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 + "'";