如何根据列名查找表名,然后访问该表
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 '%CUSTOMERIDCLASS%';
【讨论】:
以上是关于如何根据列名查找表名,然后访问该表的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 存储过程中查找表名的列名作为保留关键字