0

请看下面的查询。数据库:甲骨文

select table_name, column_name, data_type from all_tab_cols 
where
data_type = 'DATE' and
OWNER = 'OWNER_NAME'

输出/输出:

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

就像另一个表一样......简单地说,我想要数据库中日期字段小于特定年份的所有列。我试过但做不到。

4

1 回答 1

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'
于 2013-05-20T05:30:06.873 回答