如何在整个Oracle数据库中搜索特定的字符串值?

时间:2012-07-26 15:26:59

标签: sql oracle11g

  

可能重复:
  Search All Fields In All Tables For A Specific Value (Oracle)
  Search for a given string in all fields of an entire schema for Oracle

我有这个:

select * from 
{select table_name
from user_tab_columns
where data_type = 'VARCHAR2')

但是,当然,它不起作用。我只使用SQL Developer而不确定如何继续。

我以为我在上面的查询中要求从每个表中选择所有,但这是不正确的。我在SO上看到了一些答案,但他们没有帮助。我column_name中不需要user_tab_columns,我需要列的值

我真的只想找到名字'JONES'在数据库中的位置。我不知道表格或列,只是价值就在那里......某处。

感谢。

当我运行代码时:

Search All Fields In All Tables For A Specific Value (Oracle)

 SET SERVEROUTPUT ON SIZE 100000

        DECLARE
          match_count INTEGER;
        BEGIN
          FOR t IN (SELECT owner, table_name, column_name
                      FROM all_tab_columns
                      WHERE owner <> 'SYS' and data_type LIKE '%CHAR%') LOOP

            EXECUTE IMMEDIATE
              'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
              ' WHERE '||t.column_name||' = :1'
              INTO match_count
              USING 'JONES%';

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

          END LOOP;

        END;
        /

我收到了:

Error report:
ORA-00920: invalid relational operator
ORA-06512: at line 8
00920. 00000 -  "invalid relational operator"
*Cause:    
*Action:

编辑:由于某种原因,oracle不喜欢不等于<>的{​​{1}}。

编辑:如果我只是跑:

!=

我没有错误。

如果我在没有SELECT owner, table_name, column_name FROM all_tab_columns WHERE owner != 'SYS' and data_type LIKE '%CHAR%' 的情况下运行,我获得的权限不足(我拥有数据库)

删除owner != 'SYS'次运行,将其与owner != 'SYS'!=一起放回,失败

编辑:暂时尝试<>

0 个答案:

没有答案