2017-07-27 2 views
0

J'ai champ dans une base de données Oracle de type CLOB. Je dois fusionner la ligne multiple de ce rang en une ligne. Voici un exemple de contenu:Fusionner CLOB en une seule ligne - 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>" 

Le résultat devrait ressembler à ceci:

"<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>" 

Répondre

0

Vous cherchez un moyen de supprimer les caractères EOL dans un CLOB Oracle.

Essayez quelque chose comme ceci:

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

Attention à la fonction de remplacement peut avoir impacts on your db performance

2

Parce que vous travaillez avec le document de style XML. Vous pouvez utiliser xmlserializer pour supprimer tous les indentations et lignes. Notez que les données d'entrée doivent être valides xml.

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

Et l'exmaple réel.

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; 

En outre, avec cette fonction, vous pouvez faire une jolie impression de XML. Remplacez no indet par indent size = 2