我在CLOB类型的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>"
结果应如下所示:
"<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 :(得分:2)
因为您正在使用xml样式的文档。您可以使用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 indet
替换为indent size = 2
答案 1 :(得分:0)
您正在寻找一种方法来删除Oracle CLOB中的EOL字符。
尝试这样的事情:
UPDATE clob_table
SET clob_column = REPLACE(REPLACE(clob_column, chr(10), ''), ch(13),'')
WHERE <my criteria>
;
请注意,替换功能可以有impacts on your db performance