我想在oracle 11g中所有表的所有列中搜索特定值

时间:2011-03-04 12:40:47

标签: search oracle11g

是否可以在每个表的每个字段中搜索Oracle中的特定值。

我想在不使用任何程序的情况下这样做..

我们可以通过查询来完成吗?

1 个答案:

答案 0 :(得分:12)

你可以用一个查询来完成它,虽然它有点复杂。此查询将搜索当前架构中字符串'JONES'

的所有CHAR和VARCHAR2列
select table_name,
       column_name
  from( select table_name,
               column_name,
               to_number(
                 extractvalue(
                   xmltype(
                     dbms_xmlgen.getxml(
                       'select count(*) c from ' || table_name ||
                       ' where to_char(' || column_name || ') = ''JONES'''
                     )
                   ),
                   'ROWSET/ROW/C'
                 )
               ) cnt
          from (select utc.*, rownum
                  from user_tab_columns utc
                 where data_type in ('CHAR', 'VARCHAR2') ) )
 where cnt >= 0

请注意,这是Laurent Schneider通过单个查询查询count the rows in every table的改编版本。