如何根据列名查找表名,然后访问该表

Posted

技术标签:

【中文标题】如何根据列名查找表名,然后访问该表【英文标题】:How to find the name of a table based upon a column name and then access said table 【发布时间】:2014-12-23 03:51:16 【问题描述】:

我有一个列名“CustomerIDClass”,我需要在整个 Oracle 数据库中找到与其关联的表。

我已运行此程序以确定出现此列名称的表的所有者和名称:

select * from DBA_TAB_COLUMNS 
where COLUMN_NAME LIKE '%CustomerIDClass%';

我收到了这样的回复: 我没有足够的声誉来发布图片,所以这里是链接:http://i.imgur.com/a7rcKoA.png

我不知道如何访问这个 (BIN$Csew==) 表。当我尝试将它用作表名时,我收到错误或消息说没有返回任何行。

我的主要目标是编写一个简单的语句,让我在数据库中搜索“CustomerIDClass”并查看包含该列名的表。

【问题讨论】:

***.com/questions/1953239/… 我没有太多意义在评论中添加它。希望对您有所帮助。 BIN$ 表是已删除但仍在回收站中的表。您确定要访问已删除的表吗?这似乎不太可能。 【参考方案1】:

此表在回收站中。如果你有适当的权限,你必须发出FLASHBACK TABLE "Customer1"."BIN$Csew==$0" TO BEFORE DROP 命令。

文档:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9012.htm

【讨论】:

【参考方案2】:

请注意,在 oracle 中,列名以大写形式存储,但您在 like 语句中使用大小写混合,因此 select 子句不会返回任何结果

试试下面 从 DBA_TAB_COLUMNS 中选择 * 其中 COLUMN_NAME LIKE '%CUSTOMERIDCLA​​SS%';

【讨论】:

以上是关于如何根据列名查找表名,然后访问该表的主要内容,如果未能解决你的问题,请参考以下文章

linux中mysql表名默认区分大小写导致表找不到的问题

SQL Server如何查找表名或列名中包含空格的表和列

ABAP 通过字段找表程序

在 SQL Server 存储过程中查找表名的列名作为保留关键字

oracle中已经知道一个具体值,如何根据该值查询出含有该值的表名和列名?

如何根据Oracle中的值查找表名[重复]