【发布时间】:2015-05-07 21:21:58
【问题描述】:
已解决:谢谢各位!
我从一个字段中进行选择,该字段包含一堆难看的拼凑在一起的文本,其中每个“部分”都以分号结尾。用换行0d0a(crlf)“不可打印”字符替换分号的方法是什么?我已经搜索过,但大多数人想要相反的(从现有文本中删除 CR/LF。)
示例:现有 Varchar2 字段 XYZ 包含
'废话废话;还有更多的东西;甚至更多;'
(这不是我能控制的,我只是对它有读取权限。)
如果我在输出时REPLACE (XYZ,';',' CHAR(13)||CHAR(10)) ')
输出就是这样,没有主动换行。它实际上添加了characters CHAR(13)||CHAR(10)),而不是CR/LF 的功能。像这样:
Select REPLACE(XYZ',';','CHAR(13)||CHAR(10)') from XYZTable;
不需要的结果:
'blah blah blah CHAR(13)||CHAR(10)) and more stuff CHAR(13)||CHAR(10)) and even more CHAR(13)||CHAR(10))'
我想在输出中看到什么:
blah blah blah
and more stuff
and even more
真的希望有办法插入 HEX 或其他东西。还是我被困在循环中?而不是,这是由带有序列的单独行构造而成,表格设计者应该使用 CLOB,而我正在使用 LISTAGG 将其粘贴在一起。
【问题讨论】:
-
我前段时间遇到的这个问题的一个变体(用空格替换 CR/LF)是在这里,stackoverflow.com/questions/16407135/…。它确实具有 ASCII 十六进制方法。类似的帖子还有很多,顺便说一句。
-
“已解决”?如果此处发布的答案之一解决了您的问题,请接受。如果您用不同的方法解决了它,您应该自己发布并接受它。请帮助使 SO 成为其他寻求者的宝贵资源。
-
"如果此处发布的答案之一解决了您的问题,请接受。"很高兴这样做,但不知道如何做到这一点。如果没有更多“积分”,我无法“投票”。
标签: sql string oracle carriage-return linefeed