处理整个数据库以获取数据

时间:2013-05-20 04:49:59

标签: mysql oracle oracle11g oracle10g teradata

查看下面的查询。 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的所有列,其中年份日期字段小于特定年份。我已经尝试但无法做到。

1 个答案:

答案 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'