
sql 数据库中所有表中查询关键字
一个数据库中有数百个表,我想从所有表中查询出包含该“关键字”的表!“关键字”是表中列的值,不是表名也不是列明,就想查询该关键字是在哪个表中...
一个数据库中有数百个表,我想从所有表中查询出包含 该 “关键字” 的表!
“关键字” 是表中列的值,不是表名也不是列明,就想查询该关键字是在哪个表中 展开
“关键字” 是表中列的值,不是表名也不是列明,就想查询该关键字是在哪个表中 展开
4个回答
展开全部
用游标循环以下,可能效率有点低,以下是我写的一个存储过程语句供参考
--exec searchkeyword '物理'
Create proc searchkeyword(@keyword varchar(100))
as
begin
declare @tablename varchar(100),@colname varchar(100),@sql nvarchar(2000),@cou int
create table #t
(
tablename varchar(100),
colname varchar(100)
)
declare c1 cursor for
select a.name as TableName,b.name as ColName From sysobjects a
inner join syscolumns b on (a.id=b.id)
where a.xtype='U'
open c1
fetch next from c1 into @tablename,@colname
WHILE @@FETCH_STATUS = 0
begin
set @sql='select @count=count(*) from '+@tablename+' where '+@colname+'=@keyword'
begin try
exec sp_executesql @sql, N'@count int out,@keyword varchar(20)', @cou out ,@keyword
end try
begin catch
set @cou=0
end catch
if @cou>0
begin
insert into #t values(@tablename,@colname)
end
fetch next from c1 into @tablename,@colname
end
CLOSE c1
DEALLOCATE c1
select * from #t
end
--exec searchkeyword '物理'
Create proc searchkeyword(@keyword varchar(100))
as
begin
declare @tablename varchar(100),@colname varchar(100),@sql nvarchar(2000),@cou int
create table #t
(
tablename varchar(100),
colname varchar(100)
)
declare c1 cursor for
select a.name as TableName,b.name as ColName From sysobjects a
inner join syscolumns b on (a.id=b.id)
where a.xtype='U'
open c1
fetch next from c1 into @tablename,@colname
WHILE @@FETCH_STATUS = 0
begin
set @sql='select @count=count(*) from '+@tablename+' where '+@colname+'=@keyword'
begin try
exec sp_executesql @sql, N'@count int out,@keyword varchar(20)', @cou out ,@keyword
end try
begin catch
set @cou=0
end catch
if @cou>0
begin
insert into #t values(@tablename,@colname)
end
fetch next from c1 into @tablename,@colname
end
CLOSE c1
DEALLOCATE c1
select * from #t
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说一下你的数据库还有“关键字”呗
追问
关键字 是表中列的值,不是表名也不是列明,就想查询该关键字是在哪个表中
追答
查找含有相同字段的表(已知字段名)
select a.name as tbleName, b.name as columnname
from sysobjects a, syscolumns b
where a.id=b.id and a.type='U'and b.name='该关键字'
试一下吧,tbname是该关键字所在表,columname是该关键字所在列
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就要用到索引了,具体怎么写语句 我忘了 你可以看下书 这个语句应该不难。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
该 “关键字” 是表名中?字段名中?还是表中的记录中?
追问
关键字 是表中列的值,不是表名也不是列明,就想查询该关键字是在哪个表中
追答
我能想到的处理方法就是建一个存储过程,先查询出所有的表名,然后遍历表名,查询出每个表的字段,然后在把 每个字段=关键字 进行查询。如果能查到记录则返回表名字段名。
入参要加入关键字字段的类型,查询出表中字段构造where条件时需要排除类型不同的字段(如果不排除会报错).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询