选择select语句的列名和表名

时间:2014-08-13 09:08:43

标签: sql database oracle

如何从SQL中选择列名和表名?

我试过这样的事情,但它没有工作:

select column_name, table_name from (select * from users);

这可能听起来很傻,但我有一个不同的SQL列表,我需要将它们的列和表​​提取到列表中。所以我可以说一些陈述:

select username, password from users
select createdate from userlog
select * from dept
...

如果我可以选择select语句的列名和表名,那么对于第一个语句,我应该得到usernamepassword 表名users。第二个语句中createdate表名userlog

然后如果一切正常,我可以循环遍历select语句列表并提取它们的列和表​​名。

2 个答案:

答案 0 :(得分:1)

以下查询适用于Oracle database.

SELECT COLUMN_NAME,TABLE_NAME FROM ALL_TAB_COLUMNS 

您可以查看有关information-schema

的更多信息

修改

您可以尝试这样:

SELECT COLUMN_NAME,TABLE_NAME FROM ALL_TAB_COLUMNS 
WHERE TABLE_NAME IN (SELECT ColumnName FROM users)

答案 1 :(得分:0)

您需要解析SQL语句,以便SQL引擎计算出该语句返回的列的列和数据类型。

如何做到最好取决于您使用的环境。在某些编程语言中,当您创建SqlPreparedStatement或OraCommand或任何可能调用的对象时,该对象可能在解析后填充了列信息的元数据集合。

如果您在数据库本身中执行此操作,则使用DBMS_SQL解析语句可以获得所需的信息。请参阅此链接文档中的示例8:

http://docs.oracle.com/database/121/ARPLS/d_sql.htm#ARPLS68205

-

哦,这会给你select语句的列名。表格我不知道有什么方法可以轻松搞定。