如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?

如题所述

这个不可能使用简单一个查询语句来实现这个功能。因为你的这个需要基本都是比一定逻辑的查询,实现起来有相当的难度。因为首先要确定有多少张表,每张表中有多少个字段,然后才能实现某个字段中的某条记录包含你所需要的这个特定的值。
这仅仅是一个简单的思路,供参考。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-01
你这个要求基本上用一两句t-sql语句无法实现。另外如果是大数据,基本上一查就死了,这个需求基本上属于无理取闹的。因为要实现你的要求,首先要在代码里面获取数据库都有哪些表,这些表都有哪些字段,然后在一个个字段去比较。想想让数据库来实现这些东西都头痛。
不知道全文搜索是不是有这个功能,反正想自己写几行代码就实现这个功能基本上无解。
第2个回答  2019-01-28
你这个要求基本上用一两句t-sql语句无法实现。另外如果是大数据,基本上一查就死了,这个需求基本上属于无理取闹的。因为要实现你的要求,首先要在代码里面获取数据库都有哪些表,这些表都有哪些字段,然后在一个个字段去比较。想想让数据库来实现这些东西都头痛。
不知道全文搜索是不是有这个功能,反正想自己写几行代码就实现这个功能基本上无解。
第3个回答  推荐于2019-10-15
写一个存储过程
将show tables的结果放入一个集合中
然后遍历这个集合
desc table
得到单个表的字段
然后组织查询语句 select * from table where 字段1=‘cc’ or 字段2=’cc‘.......字段n='cc'

运行脚本看结果
这只是思路本回答被网友采纳
第4个回答  2019-03-22
declare
cnt number;
sqls varchar2(400);
begin
for i in ( select table_name from user_tab_comments where comments is not null )
loop
for j in (select * from user_tab_columns where table_name = i.table_name )
loop
sqls :='select count(*) from '|| i.table_name
||' where ' || j.column_name || ' like ''baidu.com%''' ;
execute immediate sqls into cnt;
if cnt >0 then
insert into test values( 'select ' || j.column_name || ' from ' ||i.table_name|| ';' ) ;commit;
end if;

end loop;
end loop;
end ;
相似回答