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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?相关的知识,希望对你有一定的参考价值。

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

运行脚本看结果
这只是思路
参考技术D 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 ;

MSSQL所有表中查找某个字段中的一个数据。100分悬赏

比如我想在 所有表里的字段中找查找aas
应该怎么写命令?

可以在我的百度空间里看:http://hi.baidu.com/fupx2008/blog/item/8b4841bf6124401619d81fb6.html
---查询一(所)表所有字段包含xx的信息
--1、查找所表所对应的字段
Select Distinct A.name As columnname,object_name(A.id)As tablename Into T_Search
From Syscolumns A,Sysobjects B, Systypes C
Where A.id=B.ID And B.xtype='u' --And B.Name='Dept' ---如果只查一个表,把 And B.Name='Dept' 加上,并把"Dept"换成你的表
And C.name in('varchar','nvarchar','char','nchar','text','ntext')
And object_name(A.id)<>'T_Search' ---排除刚刚生成的表T_Search
go

---2、创建函数
Create function Search_Info(@tableName varchar(1000),@keyword varchar(1000))
Returns varchar(8000)
As
Begin
Declare @sql varchar(8000)
Set @sql='Select * From '+@tableName +' Where 1=1'
Select @sql=@sql+' Or '+ columnname +' Like ''%'+@keyword+'%''' From T_Search ---如果是精确查找就把%去掉
Where tablename=@tablename
Return Replace(@sql,'1=1 Or','')
End
go

---3、查找所要包含的信息
Declare @Exec_SQL varchar(8000)
Set @Exec_SQL=(Select dbo.Search_Info(tableName,'aas') From T_Search Group By tablename)
Exec(@Exec_SQL)

---4、删除表和函数
/*
Drop Table T_Search
Drop function dbo.Search_Info
*/
参考技术A select attr_name
from (select * from tab) -- 找出所有的表
where attr_name = 'aas'

语法应该的改改,想法是找出所有的表后就搜索。
怎么样join所有的表就看你自己了。

以上是关于如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?的主要内容,如果未能解决你的问题,请参考以下文章

用oracle如何查询出一个表中的一个字段内容包含另一个表中的某个字段的值呢

SQL如何查询一张表的所有字段并按其中一个字段进行分组

oracle中如何查找指定表的所有字段,该表是我自己创建的!在线求解

MySQL如何查询一个表的所有列名?

oracle 将表中所有字段拼接成一个字符串给另一个表的一个字段

如何查询oracle中的所有表和视图