select table_name, column_name
from all_tab_columns
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>'
如何在Oracle DB上使用上述列搜索查询来查找特定模式?
我问,因为我已经尝试了查询,并且它还返回了我感兴趣的架构之外的许多表,因此它们对我没有兴趣。
答案 0 :(得分:5)
select table_name, column_name
FROM all_tab_columns
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>'
and owner = '<schema>';
all_tab_columns
包含当前用户拥有权限的所有列。所以它可能不会返回所有数据。
dba_tab_columns
包含有关所有列的信息,但您可能需要一些特殊权限才能查询此字典视图。
最后,如果您只对当前用户拥有的所有表的列感兴趣,可以使用:
select table_name, column_name
FROM user_tab_columns
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>';
但是这个视图没有OWNER
列(它只包含当前用户拥有的所有列)
答案 1 :(得分:0)
您可以使用LIKE功能优化搜索。 我不知道列的确切名称,但您可以将所有者和表名添加到此列:
select table_name, column_name
from all_tab_columns
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>'
以类似的方式:
select column1,column2,column3,more_columns
from all_tables_you_need
where column1 like '%&column1%'
and column2 like '%&column2%'
and column3 like '%&column3%';
这3个变量中的任何一个也可以为空,但你也可以在其中放置一个非常具体的变量,这样结果会有很大变化。如果你不确定这种情况,或者你想忽略区分大小写,请使用UPPER功能。
答案 2 :(得分:0)
使用以下内容。
您可以通过
使用的 SQL工具进行尝试select table_name from all_tab_columns where column_name = 'PICK_COLUMN';
或者,如果您拥有 DBA权限,
select table_name from dba_tab_columns where column_name = 'PICK_COLUMN';
但如果您不确定列名,可以将LIKE
语句添加到当前查询中。
例如:
select table_name from all_tab_columns where column_name LIKE '%PICK_COLUMN%';