在oracle9i中去掉“86,87,”中最后那个“,”,而中间的“,”不用删除我开始写成,update ja_org set biz_range=substr(biz_range,1,length(biz_range)-1); 却发现实际上这里的数据不一定后面都有“,”号的,如果没有“,”的记录,执行update ja_org set biz_range=substr(biz_range,1,length(biz_range)-1);就惨了,最后的一位数字被删掉了
请问大虾这个case...if该如何用在这里,完成“结尾是“,”号的就删除掉最后一个字符,如果结尾不是“,”号的,就不执行删除操作”的功能如果能把整条sql写出了,最好了,偶是oracle的一只菜鸟谢谢大虾

解决方案 »

  1.   

    只要能完成这项功能,不要求使用case...if
      

  2.   

    SQL> select * from aa;NAME
    --------------------------------------------------
    86,87,88,SQL> update aa set name=decode(',',substrb(name,-1,1),substrb(name,1,lengthb(name)-1),name);已更新 1 行。SQL> select * from aa;NAME
    --------------------------------------------------
    86,87,88SQL> update aa set name=decode(',',substrb(name,-1,1),substrb(name,1,lengthb(name)-1),name);已更新 1 行。SQL> select * from aa
      2  ;NAME
    --------------------------------------------------
    86,87,88
      

  3.   

    select rtrim('12345,', ','),  rtrim('12345', ',') from dual
      

  4.   

    update ja_person set type_code=decode(',',substrb(type_code,-1,1),substrb(type_code,1,lengthb(type_code)-1),type_code);正确的显示了结果,万分感谢atgc!!!不过这里用到的substrb,lengthb我以前听都没有听说过
      

  5.   

    我买的sql资料上也没有讲到这些函数的
      

  6.   

    楼主为什么不用rtrim?sbaz(万神渡劫)和xiao_fang(frank)不是写得很好吗?
      

  7.   

    4r4r
    rtrim是很好的方法
      

  8.   

    update aa set name=rtrim(name,',');
      

  9.   

    sbaz(万神渡劫)和xiao_fang(frank)说得不错得