Oracle SQL:如何根据列名找到表名?

use*_*942 10 sql oracle

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

Jos*_*ber 14

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

SELECT owner, table_name
  FROM all_tab_columns
  WHERE UPPER(column_name) = UPPER('MYCOL');
Run Code Online (Sandbox Code Playgroud)

  • @Roobie,99.8%的时间,但总是有可能蝙蝠东西疯狂的供应商代码(考虑为SQL Server设计的应用程序,供应商制作了Oracle版本).您可以在Oracle中创建混合大小写列,但不应该.示例:`CREATE TABLE stupid_table("MixedCaseColumn"INTEGER PRIMARY KEY);`.两侧放置"UPPER"可以覆盖近100%的屁股.为了好笑,看看我刚刚放在一起的小提琴:http://sqlfiddle.com/#!4/2840e/1/0 (2认同)

Roo*_*bie 10

试试这个(一个已知专栏):

CREATE TABLE mytab(mycol VARCHAR2(30 CHAR));

SELECT table_name FROM user_tab_columns WHERE column_name='MYCOL';

注意MYCOL大写column_name='MYCOL';

干杯!