2017-07-26 17 views
0

CLOB型のOracleデータベースにフィールドがあります。私はこのCLOBファイルから最初の行だけを抽出します。ここでは、コンテンツの一例です: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> 

答えて

0

あなたが本当に最初の改行の前の文字にCLOB値の先頭から文字を返すようにしたい場合(chr 10)、次に例を示します。

create table tab1 (c1 clob); 
insert into tab1 values ('line 1' || chr(10) || 'line 2'); 
select dbms_lob.substr(c1, dbms_lob.instr(c1, chr(10))-1, 1) from tab1; 

DBMS_LOB.SUBSTR(C1,DBMS_LOB.INSTR(C1,CHR(10))-1,1) 
------------------------------------------------------------------------------ 
line 1 

詳細については、thisを参照してください。

+0

をしかしCLOBが一列のみを持っている場合、このクエリは失敗しています。 –

+0

@ GanzRicanz「1行しか持っていない」と答えると、「1行だけ」を意味するのでしょうか、クエリが複数の行を返すときを意味しますか? – jeff6times7

+0

申し訳ありませんが、CLOBファイルに1行しか含まれていないと失敗します。 –

0

私はそうのように、REGEXP_SUBSTRを使用していることだろう。jeff6times7 @おかげ

select 
REGEXP_SUBSTR(
'<div class="pi-tier3"><div class="pi-pdpmainbody"><p><b>FIT</b></p><p>Core Indy - Compression </p> 
<p><b>PRO</b></p><ul>' 
, '^.*$', 1, 1, 'm') 
from dual; 

乾杯

+0

私はあなたの答えが使用するように 'nm'の代わりに 'm'を使用すると、あなたの表現を動かすことができます。 'n'はドットを改行文字に一致させ、式を入力全体に一致させます。 – jeff6times7

+1

レスポンスを編集し、 'n' frm 'nm'を削除しました。別のケースから上書きしました。 – g00dy

関連する問題