SQL REGEX搜索表名

时间:2017-03-20 09:15:02

标签: sql regex oracle

这是我的第一次参赛作品,所以请原谅我写这篇文章的任何错误。

我有一个充满表视图的oracle数据库模式。我想使用" TEXT_VC" " all_views"中的列table获取源表名列表。

这是我到目前为止的陈述:

SELECT view_name, text_vc, REGEXP_SUBSTR(TEXT_VC,'from (.+?) ') AS source_table 
FROM all_views 
WHERE owner = 'OWNER';

我还有这个正则表达式的视图问题。 首先,我从table_name"得到#34;结果是。我不想从""在我的结果集中。

其次,TEXT_VC列基本上显示了视图后面的SQL。所以在某些情况下我没有得到任何结果,因为有换行符。我尝试使用\ n和\ r \ n但我无法生成我想要的结果。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

select * from all_dependencies

演示

create table mytable_1 (i int);
create table mytable_2 (i int);

create view myview 
as 
select  count(*) as cnt
from          mytable_1 t1 
        join  mytable_2 t2 
        on    t2.i = t1.i
;
select    * 
from      all_dependencies
where     owner = 'DMARKOVITZ'
      and name  = 'MYVIEW'
;      
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+
|   OWNER    |  NAME  | TYPE | REFERENCED_OWNER | REFERENCED_NAME | REFERENCED_TYPE | REFERENCED_LINK_NAME | DEPENDENCY_TYPE |
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+
| DMARKOVITZ | MYVIEW | VIEW | DMARKOVITZ       | MYTABLE_1       | TABLE           | (null)               | HARD            |
| DMARKOVITZ | MYVIEW | VIEW | DMARKOVITZ       | MYTABLE_2       | TABLE           | (null)               | HARD            |
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+