oraclesql:在给定列名的情况下,如何查找表名?

oraclesql:在给定列名的情况下,如何查找表名?,sql,oracle,Sql,Oracle,如果我知道表中每一列的名称,但不知道表的名称,如何找到我需要的表的名称?试试这个(一个已知列): 创建表mytab(mycolvarchar2(30个字符))从用户选项卡的列中选择表名,其中列名为mycl 注mycl在column\u name='mycl'中是大写的 干杯 基于@Roobie的解决方案,下面的代码在您有权访问的所有模式中搜索,以防该表不在您自己的模式中。还添加了不区分大小写的匹配 SELECT owner, table_name FROM all_tab_columns

如果我知道表中每一列的名称,但不知道表的名称,如何找到我需要的表的名称?

试试这个(一个已知列):

创建表mytab(mycolvarchar2(30个字符))

从用户选项卡的列中选择表名,其中列名为mycl

mycl
column\u name='mycl'
中是大写的


干杯

基于@Roobie的解决方案,下面的代码在您有权访问的所有模式中搜索,以防该表不在您自己的模式中。还添加了不区分大小写的匹配

SELECT owner, table_name
  FROM all_tab_columns
  WHERE UPPER(column_name) = UPPER('MYCOL');

不确定,但如果每个表的主键列名称都是唯一的,那么您可以尝试访问数据库的元数据并搜索表?嘿,Josh,编辑得不错。我认为您不需要在左侧使用UPPER(UPPER(column_name))。干杯@Roobie,99.8%的时间都是这样,但总是有可能出现疯狂的供应商代码(想想一个为SQL Server设计的应用,供应商制作了一个Oracle版本)。您可以在Oracle中创建混合大小写列,但不应该这样做。示例:
createtable\u TABLE(“MixedCaseColumn”整数主键)。在几乎100%的情况下,将
鞋面
放在两侧可以覆盖臀部。为了开怀大笑,请看我刚刚拼凑的这把小提琴:还有其他可用的视图:USER\u TAB\u COLS、ALL\u TAB\u COLS、ALL\u TAB\u COLS。根据您的访问权限,还可以使用以下列:DBA\U TAB\U列、DBA\U TAB\U列
select * from all_updatable_columns where column_name like 'reqd col name';