2017-07-27 8 views
0

CLOBタイプのOracleデータベースにフィールドがあります。私はこの複数の行を1行にマージする必要があります。ここでは、コンテンツの例を示します。CLOBを1行にマージ - ORACLE

"<div class="pi-tier3"><div class="pi-pdpmainbody"><p><b>FIT</b></p><p>Core Indy - Compression </p> 
<p><b>PRO</b></p><ul> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li></li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
</ul> 
<p><b>PRP</b></p><ul> 
<li>100%</li> 
<li>DRY</li> 
</ul> 
<p>ABCDEF:PmId12345RmLn1VlId0</p> 
</div></div>" 

結果は次のようになります。あなたは、OracleのCLOBにEOLの文字を削除する方法を探している

"<div class="pi-tier3"><div class="pi-pdpmainbody"><p><b>FIT</b></p><p>Core Indy - Compression </p> <p><b>PRO</b></p><ul> <li>ABCDEF:PmId12345RmLn1VlId0</li> <li>ABCDEF:PmId12345RmLn1VlId0</li> <li>ABCDEF:PmId12345RmLn1VlId0</li> <li></li> <li>ABCDEF:PmId12345RmLn1VlId0</li> </ul> <p><b>PRP</b></p><ul> <li>100%</li> <li>DRY</li> </ul> <p>ABCDEF:PmId12345RmLn1VlId0</p> </div></div>" 

答えて

0

はこのような何かを試してみてください:

UPDATE clob_table 
    SET clob_column = REPLACE(REPLACE(clob_column, chr(10), ''), ch(13),'') 
WHERE <my criteria> 
; 

あなたは、XML形式のドキュメントで作業しているので交換する機能がimpacts on your db performance

2

を持つことができます注意してください。 xmlserializerを使用すると、すべてのインデントと行を削除できます。 入力データは有効なxmlである必要があります。

select xmlserialize(content xmltype(your_clob_with_valid_xml) 
        as clob NO INDENT)from dual; 

本当の例です。

select xmlserialize(content xmltype('<div class="pi-tier3"><div class="pi-pdpmainbody"><p><b>FIT</b></p><p>Core Indy - Compression </p> 
<p><b>PRO</b></p><ul> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
<li></li> 
<li>ABCDEF:PmId12345RmLn1VlId0</li> 
</ul> 
<p><b>PRP</b></p><ul> 
<li>100%</li> 
<li>DRY</li> 
</ul> 
<p>ABCDEF:PmId12345RmLn1VlId0</p> 
</div></div>') as clob NO INDENT)from dual; 

さらに、この機能を使用すると、XMLをきれいに印刷できます。 no indetindent size = 2

に置き換えます
関連する問題