【发布时间】:2011-09-20 12:48:22
【问题描述】:
我想在 Oracle 11g 中使用正则表达式从列中提取文本。我有 2 个查询可以完成这项工作,但我正在寻找一种(更清洁/更好)的方式来完成这项工作。也许将查询组合成一个或一个新的等效查询。他们在这里:
查询 1:识别与模式匹配的行:
select column1 from table1 where regexp_like(column1, pattern);
查询 2:从匹配的行中提取所有匹配的文本。
select regexp_substr(matching_row, pattern, 1, level)
from dual
connect by level < regexp_count(matching_row, pattern);
我使用 PL/SQL 将这 2 个查询粘合在一起,但它既混乱又笨拙。如何将它们组合成 1 个查询。谢谢。
更新:模式“BC”的示例数据:
row 1: ABCD
row 2: BCFBC
row 3: HIJ
row 4: GBC
预期结果是 4 行 'BC' 的表格。
【问题讨论】:
-
有趣...您能否发布数据样例和所需结果的示例?