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);
我必须从动态查询中找到 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);