0

Oracle 11g、CF 10 を使用。

CF / Oracleが保存された段落を変更する方法と理由を理解しようとしています。次のコンテンツがテキストエリア入力から clob フィールドに保存された場合:

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) に変換しているようです。使用する

regexp_replace(myCLOBfield, chr(13) || chr(10), 'HEY', 1, 0) myCLOBfield

何も置き換えられません。ただし、

regexp_replace(myCLOBfield, chr(10), 'HEY', 1, 0) myCLOBfield

すべての CRLF を検索し、それらを「HEY」に置き換えます。しかし、内容をメモ帳に貼り付けて CRLF を表示し、適切にフォーマットするのに、ParagraphFormat で最初の改行が失われる理由がわかりません。

最も一貫した解決策は、すべての double chr(10) を single に置き換えてから、すべての single chr(10) を double に置き換えることです。単線。私はそれを次のようにしました:

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.

元のフォーマットを保持する方法を知っている人はいますか?

4

0 に答える 0