首先说一下我的需求:
表A结构中有一个列是AAA,这是一个varchar2类型列。现在要把表A中的
所有记录中的AAA里面的[cr],[lf]换行符全部替换成[crlf],另外这个AAA中有
[cr],[lf],[crlf]三种混在的情况。我现在的做法如下
 Cursor cur_aaa is
   Select * from A
   Where A.AAA like ‘%’ || chr(10) || ‘%’
      Or A.AAA like ‘%’ || chr(13) || ‘%’
然后遍历这个游标去更新,用replace替换。
这样是可以替换所有的cr和lf。但是如果AAA中只有[crlf]的话也被替换了,
现在请教各位能否有办法不把AAA中全是[crlf]作为替换对象。求高手指教。
Oracle

解决方案 »

  1.   

    AAA里面的[cr],[lf]换行符全部替换成[crlf], 哪里有换行符?
      

  2.   


    AAA是列名,每条记录中的AAA都有换行符
    [cr]回车
    [lf]换行
    [crlf]回车换行
      

  3.   


    得到的结果是??
    [crlf]回车换行
    [crlf]回车换行
      

  4.   

    可否变通下:在你做完第一步后,含有[crif]的列会被跟新为[crifcrif],然后你可以做第二步,把这种记录再repalce就行了
      

  5.   


    那得到的结果是什么?
    我想要的结果是把所有的cr和lf换行符全部替换成crlf,另外如果替换之前就都是crlf了那么就不替换了。
    我就是想要这样的结果
      

  6.   

      Select * from A
       Where A.AAA like ‘%’ || chr(10) || ‘%’
          Or A.AAA like ‘%’ || chr(13) || ‘%’
    minus
      Select * from A
       Where A.AAA like ‘%’ || chr(10)chr(13) || ‘%’
       
    楼主可以使用这个试试,这个应该会查出所有的cr和lf 但是不包含crlf
      

  7.   

    一 先把表中[crlf]替换为'*'
    二 执行你的操作
    三 把'*'替换为[crlf]