web-dev-qa-db-ja.com

Oracleのclobから部分文字列を抽出します

データのあるCLOBがあります

<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><static-content language-id="en_US"><![CDATA[<script type="text/javascript">
function change_case()
{
    alert("here...");
    document.form1.type.value=document.form1.type.value.toLowerCase();
}
</script>

<form name=form1 method=post action=''''>
<input type=text name=type value=''Enter USER ID'' onBlur="change_case();">
<input type=submit value=Submit> </form>
</form>]]></static-content></root>

この場合、onblur属性を持つ行を抽出したいと思います。

<input type=text name=type value=''Enter USER ID'' onblur="change_case();">
8
micheal marquiz

Tom Kyteは、SQLまたはPL/SQLコードのclobからvarchar2を取得する方法について説明します。

http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:367980988799

また、varchar2がある場合は、SUBSTRまたはREGEXP_SUBSTR関数を使用して行を抽出できます。

http://docs.Oracle.com/cd/B14117_01/server.101/b10759/functions147.htm#i87066

http://docs.Oracle.com/cd/B14117_01/server.101/b10759/functions116.htm

SQLコードを使用する場合は、このリクエストを作成できます

select col1, col2, func1(dbms_lob.substr( t.col_clob, 4000, 1 )) from table1 t

また、PL/SQL関数「func1」では、SUBSTRまたはその他の関数を使用して入力文字列で必要な処理を実行できます

8
Alexander

問題を細分化します。特定の部分文字列を含むテキスト行をCLOBから抽出したいとします。私はあなたの要件の2つの可能な解釈を考えることができます:

オプション1。

  1. CLOBを一連の行に分割します-例:それが本当に「行」の意味である場合は、改行/キャリッジリターン文字で分割します。
  2. 各行をチェックして、部分文字列が含まれているかどうかを確認します。 onblur。もしそうなら、あなたはあなたのラインを見つけました。

オプション2。

実際にはlineを意味するのではなく、<script>...</script> htmlフラグメントが必要な場合は、同様のロジックを使用できます。

  1. <script>の最初の出現を検索します。
  2. その時点以降に出現する</script>を検索します。 <script>から</script>に部分文字列を抽出します。
  3. 部分文字列でonblurを検索します。見つかった場合は、部分文字列を返します。それ以外の場合は、<script>の次の出現箇所を見つけ、手順2に進み、すすぎ、繰り返します。
1
Jeffrey Kemp