SQL查询问题 我有一个数据库,有很多表,我想查一些数据,但不知道在那个表,有办法查吗?

作者&投稿:谈谭 (若有异议请与网页底部的电邮联系)
SQL数据库里有很多表,但是不知道关键字在哪个表里,怎么查?~

mssql 的话
select a.name 表名,b.name 列名
from sysobjects a,syscolumns b
where a.id=b.id and b.name=关键字 and a.type='U'

Create Procedure sp_Search(@Val Varchar(4000))
As
Begin
Declare @TBName Varchar(200)
Declare @ColName Varchar(200)
Declare @Rst int
Declare @Sql NVarchar(4000)
Declare @TB Table(TbName Varchar(200),ColName Varchar(200))

Declare myCur Cursor For
Select A.Name,B.Name From sys.objects A Inner join sys.columns B on a.object_id=b.object_id
Where A.Type='U' And system_Type_ID in(35,99,167,175,231,239)
Open myCur;
Fetch Next From myCur Into @TBName,@ColName
While @@FETCH_STATUS = 0
Begin
Set @Sql='If Exists(Select * From ['+@TBName+'] Where ['+@ColName+'] Like @Val)'
Set @Sql=@Sql+'Set @Rst=1 '
Set @Sql=@Sql+'Else '
Set @Sql=@Sql+'Set @Rst=0 '
Exec sp_Executesql @sql,N'@Val Varchar(4000),@Rst int output',@Val,@Rst output
If(@Rst=1)
Insert Into@TB values(@TBName,@ColName)
Fetch Next From myCur Into @TBName,@ColName
End
Close myCur
DeAllocate myCur

Select * From @TB
End
/*
测试:
Exec sp_search '内容'
Exec sp_search '%内容%'
以上搜索包含的字段数据类型为Char,Varchar,Text,NChar,NVarchar,NText
思路:
先查询出所有表所有字符型栏位,然后每个表每个栏位查询值是否等于@Val,如果等则保存表名和字段名,最后返回结果
*/

--汗,那是存储过程过程去遍历每个表的每个栏位,又不是要你一个写SQL

你可以通过这个系统表查询当前库下的所有表:
use database;
go
select * from sys.tables
go

建议用字段名查询
select * from ALL_TAB_COLUMNS where COLUMN_NAME like '%字段名%' 一般来说字段名都是有自己的规律的 虽然你不知道在那个表里面但多少你会知道那个表中含有那些字段。或者说你大概能够猜到字段名是什么。 我以前也遇到这样的问题,所以用这种方法个人感觉还是不错的!

如果是oracle我有存储过程搜全库,需要回个话。别数据库我不知道。

你应该有该表的特征吧。字段或者表名??