在 Oracle 整个架构的所有字段中搜索给定字符串

2023-12-12

我们如何在 Oracle 整个模式的所有字段中搜索给定字符串?

Oracle中有执行上述操作的sql脚本吗?如果是,怎么办?

我们可以通过其他脚本来完成吗?


"ALL_TAB_COLUMNS“是一个系统表,具有所有表列数据类型等。

"USER_TAB_COLUMNS“是一个系统表,具有所有表列数据类型等(所有者是当前用户)。(感谢 Rene)

一个例子:

 SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns

    DECLARE
      matches INTEGER;
    BEGIN
      FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP

        EXECUTE IMMEDIATE
          'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
          INTO matches
          USING 'What you search';

        IF matches > 0 THEN
          dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
        END IF;

      END LOOP;

    END;
    /

此查询将输出 table_name '' column_name'' 和计数,如果您有标准列和表名称,您可以将查询更改为 IF columns > 0 然后在循环中编写查询 UNION 并返回游标,或者返回一个表,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Oracle 整个架构的所有字段中搜索给定字符串 的相关文章

随机推荐