查看下面的查询。 DB:ORACLE
select table_name, column_name, data_type from all_tab_cols
where
data_type = 'DATE' and
OWNER = 'OWNER_NAME'
O / P:
TABLE_NAME COLUMN_NAME DATA_TYPE
T1 C1 DATE
T1 C2 DATE
T2 C3 DATE
T2 C4 DATE
现在,我得到了完美的结果。我想建立一个进一步处理的查询。从结果来看,我想拾取table_name,column_name并在column_name上应用过滤器。
示例:
TABLE: T1
C1 c2
01-01-2001 01-01-2011
02-02-1990 05-05-1700
03-03-1753 10-10-1764
明智的另一张表... 简单地说,我想要来自DB的所有列,其中年份日期字段小于特定年份。我已经尝试但无法做到。
答案 0 :(得分:3)
我知道了......
此查询可以实现..
select table_name
, column_name
,to_number(extractvalue(
xmltype(dbms_xmlgen.getxml(
'select count(*) c from '||owner||'.'||table_name ||' WHERE extract(year from ' || column_name || ') < 1753'
))
,'/ROWSET/ROW/C')) as count1
from all_tab_cols
where
data_type = 'DATE' and
OWNER = 'OWNER_NAME'