10

我有一个数据块

<?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();">
4

2 回答 2

11

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 或任何其他函数对输入字符串执行您想要的操作

于 2012-04-12T21:16:53.083 回答
1

细分你的问题。您想从包含特定子字符串的 CLOB 中提取一行文本。我可以想到您的要求的两种可能的解释:

选项1。

  1. 将 CLOB 拆分为一系列行 - 例如,如果这确实是您所说的“行”的意思,则将其拆分为换行符/回车符。
  2. 检查每一行以查看它是否包含子字符串,例如onblur. 如果是这样,您已经找到了您的线路。

选项 2。

如果您实际上不是指line,而是想要<script>...</script>html 片段,则可以使用类似的逻辑:

  1. 搜索 的第一次出现<script>
  2. </script>在该点之后搜索下一个出现的。<script>从to中提取子字符串</script>
  3. 在子字符串中搜索onblur. 如果找到,则返回子字符串。否则,找到下一个出现的<script>,转到步骤 2,冲洗,重复。
于 2012-04-13T02:03:45.020 回答