如何从SQL中选择列名和表名?
我试过这样的事情,但它没有工作:
select column_name, table_name from (select * from users);
这可能听起来很傻,但我有一个不同的SQL列表,我需要将它们的列和表提取到列表中。所以我可以说一些陈述:
select username, password from users
select createdate from userlog
select * from dept
...
如果我可以选择select语句的列名和表名,那么对于第一个语句,我应该得到username
和password
列和表名的users
。第二个语句中列的createdate
和表名的userlog
。
然后如果一切正常,我可以循环遍历select语句列表并提取它们的列和表名。
答案 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语句的列名。表格我不知道有什么方法可以轻松搞定。