【问题标题】:Oracle SQL to list all occurrences of string in Clob/Blob FieldOracle SQL 列出 Clob/Blob 字段中所有出现的字符串
【发布时间】:2020-03-26 13:23:29
【问题描述】:

我的 Oracle 表“Table1”中有一个字段,其中包含“texta”列,其中包含我所有的代码。 我想提取与模式“记录”匹配的所有事件。或“记录”。并列出结果。例如:-

文本内容

CreateRecord = CreateRecord(Record.PS_JOB)
CreateRecord = CreateRecord(Record.PS_NATIONAL_ID)

预期结果是

PS_JOB
PS_NATIONAL_ID

【问题讨论】:

  • texta 的数据类型是什么?
  • 您可以使用REGEXP_LIKE过滤记录并使用REGEXP_REPLACE修剪字符串
  • 当我在 10 分钟内得到答复时,有人可以解释为什么这个问题被否决了。我不会再犯这个错误了。
  • 我没有投反对票。但是您可以在询问sql 问题时查看this 线程。

标签: oracle clob regexp-like


【解决方案1】:

看看这是否有帮助。

SQL> desc test
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- -------------------
 ID                                                             NUMBER
 TEXTA                                                          CLOB

SQL> select * From test;

        ID TEXTA
---------- ------------------------------------------------------------------------
         1 CreateRecord = CreateRecord(Record.PS_JOB)
           CreateRecord = CreateRecord(Record.PS

         2 CreateRecord = CreateRecord(Record.ABC_DEF)
         3 CreateRecord = CreateRecord(Record.LITTLE_FOOT)

SQL> select id,
  2    regexp_substr(texta, 'Record\.\w+', 1, column_value) result
  3  from test cross join
  4       table(cast(multiset(select level from dual
  5                           connect by level <= regexp_count(texta, 'Record\.')
  6                          ) as sys.odcinumberlist));

        ID RESULT
---------- ------------------------------------------------------------------------
         1 Record.PS_JOB
         1 Record.PS_NATIONAL_ID
         2 Record.ABC_DEF
         3 Record.LITTLE_FOOT

SQL>

【讨论】:

  • 不客气。至于否决票:我不知道是谁做的,但是是的 - 如果否决票需要解释(或者如果该人发表(n匿名)评论),这将有所帮助。
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 2013-07-31
  • 2014-08-10
  • 2023-02-06
  • 2012-10-12
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多