首页 文章

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

提问于
浏览
6

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

我想这样做而不使用任何程序..

我们可以用查询来做吗?

1 回答

  • 12

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

    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的查询的改编版本,只有一个查询 .

相关问题