Select * from mytable
where colum_datatype is date
同样,我想得到所有varchar2类型的字段。有可能这样做吗? 我可以手动找到所有日期字段并将它们放入查询中,但我只想知道是否有其他方法可以执行此操作。 谢谢!
答案 0 :(得分:4)
您可以查询其中一个系统表/视图以获取列列表:
select column_name
from all_tab_cols
where owner = :owner and table_name = :table and data_type = 'DATE';
如果您需要一次性解决方案,只需聚合这些并插入一个SQL查询。您可以构造整个SQL查询:
select 'SELECT ' || listagg(column_name, ', ') within group (order by column_id) || ' FROM ' || :table
from all_tab_cols
where owner = :owner and table_name = :table and data_type = 'DATE';
您还可以将查询放入字符串并使用动态SQL(execute immediate
)来运行查询。
答案 1 :(得分:2)
抱歉,vanilla SQL中不存在此类功能。您可以通过创建一个将游标返回到动态创建的SQL语句的PL / SQL函数来模拟此类功能。