Select 来自使用正则表达式的 Oracle 查询字符串的单词

Select a word from an Oracle query string using regular expression

我必须从动态查询中找到 table 名称。查询中的 table 名称前面可能有也可能没有模式名称。但是 table 名称将始终跟在“@dblink”字符串之后。 查询模式如下:'select c1, c2 from schema.table_name@dblink ...' 或者,它可能像:'select c1,c2,c3 from table_name@dblink ...' 也就是说,列数 - c1、c2 等 - 是可变的。此外,开发人员可能会在任意 2 个单词之间的任意位置放置多个连续空格。

我的objective是检索table"table_name"的名字。

如何使用正则表达式执行此操作?

如果你想要 '@dblink' 之前的单词,你可以这样做:

regexp_replace(mycol, '.*\W(\w+)@dblink.*', '')
declare var

SELECT name into var  from table where name LIKE '%@dblink';

你可以这样打印

DBMS_OUTPUT.PUT_LINE (var);