关于oracle中换行符替换问题
首先说一下我的需求:
表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]作为替换对象。求高手指教。
------解决方案--------------------可否变通下:在你做完第一步后,含有[crif]的列会被跟新为[crifcrif],然后你可以做第二步,把这种记录再repalce就行了
------解决方案-------------------- 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
------解决方案--------------------一 先把表中[crlf]替换为'*'
二 执行你的操作
三 把'*'替换为[crlf]