我们有一个包含许多表的大型Oracle数据库。有没有一种方法可以查询或搜索到是否有具有特定列名的表?
IE显示包含以下列的所有表:id, fname, lname, address
我忘记添加的细节:我需要能够搜索不同的模式。我必须用来连接的那个表并不拥有我需要搜索的表。
发布于 2009-12-23 23:06:30
要查找具有特定列的所有表,请执行以下操作:
select owner, table_name from all_tab_columns where column_name = 'ID';
要查找包含任意或全部4列的表,请执行以下操作:
select owner, table_name, column_name
from all_tab_columns
where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS');
要查找包含所有4列(不缺少任何列)的表,请执行以下操作:
select owner, table_name
from all_tab_columns
where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS')
group by owner, table_name
having count(*) = 4;
发布于 2014-01-13 17:21:51
要搜索列名,如果您准确地知道列名,请使用以下查询:
select owner,table_name from all_tab_columns where upper(column_name) =upper('keyword');
如果您不知道准确的列,要搜索列名,请使用以下命令:
select owner,table_name from all_tab_columns where upper(column_name) like upper('%keyword%');
发布于 2009-12-25 00:09:53
下面是我们保存到findcol.sql中的一个文件,这样我们就可以从SQLPlus中轻松地运行它
set verify off
clear break
accept colnam prompt 'Enter Column Name (or part of): '
set wrap off
select distinct table_name,
column_name,
data_type || ' (' ||
decode(data_type,'LONG',null,'LONG RAW',null,
'BLOB',null,'CLOB',null,'NUMBER',
decode(data_precision,null,to_char(data_length),
data_precision||','||data_scale
), data_length
) || ')' data_type
from all_tab_columns
where column_name like ('%' || upper('&colnam') || '%');
set verify on
https://stackoverflow.com/questions/1953239
复制相似问题