我在Oracle数据库中有一个CLOB类型的字段。我从这个CLOB文件中只提取了第一行。下面是一个内容的例子:
"<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>
2条答案
按热度按时间5ssjco0h1#
如果你真的想返回从clob值开始到第一个换行符(chr 10)之前的字符,那么这里有一个例子:
查看此页面以获取更多信息。
编辑日期:2023年5月4日
如果一个CLOB只有一行,并且允许该行没有尾随的换行符,那么您必须编写代码来扫描整个CLOB以查找换行符,以便返回整个CLOB的字符。
如果将substr的第二个参数视为更复杂的表达式,则可以不考虑性能问题。如果你把它变成一个decode或者case语句,那么你可以让表达式返回它现在的样子,或者如果instr函数没有找到换行符,返回clob的大小。
af7jpaap2#
我会使用
REGEXP_SUBSTR
这样做:干杯