使用 Oracle 11g、CF 10。
我试图了解 CF/Oracle 如何以及为何更改已保存的段落。如果将以下内容保存到 clob 字段中,则来自 textarea 输入:
This is paragraph 1.
This is paragraph 2.
This is paragraph 3.
当输出到页面时,使用:
<p>
<cfoutput>#ParagraphFormat(myTable.myCLOBfield)#</cfoutput>
</p>
它的格式如下:
This is paragraph 1. This is paragraph 2.
This is paragraph 3.
当我直接从查询结果中复制保存的文件并将其粘贴到记事本中并打开查看所有字符时,我可以看到格式与原始输入相同,并且所有 CRLF 都在我希望看到的位置他们。
似乎 Oracle 正在将 CRLF 转换为 chr(10)s。使用
regexp_replace(myCLOBfield, chr(13) || chr(10), 'HEY', 1, 0) myCLOBfield
不会导致任何东西被替换。但是,使用
regexp_replace(myCLOBfield, chr(10), 'HEY', 1, 0) myCLOBfield
确实找到所有 CRLF 并将它们替换为“嘿”。但我很困惑为什么将内容粘贴到记事本中然后显示 CRLF 并正确格式化它们,而 ParagraphFormat 会丢失第一个换行符。
似乎最一致的解决方案是将所有双 chr(10) 替换为单曲,然后将所有单 chr(10) 替换为双精度,所以我总是得到双换行符,并且所有新段落都用 a 分隔单线。我是这样做的:
regexp_replace(regexp_replace(myCLOBfield, chr(10) || chr(10), chr(10), 1, 0), chr(10), chr(10) || chr(10), 1, 0) myCLOBfield
这导致以下(可接受的)格式:
This is paragraph 1.
This is paragraph 2.
This is paragraph 3.
有人对如何保留原始格式有更好的了解吗?