如何搜索整个数据库?有N个表,如何临时找一个字符串?不建全文索引

阿土伯土 2005-05-03 05:22:53
一个数据库,有N个表,我忘记在哪个表的哪个字段里面存放了 一个字符串 "xxxxxxxx" ,请问如何找到相关的表或者记录?

我只是临时找
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
云中客 2005-05-03
  • 打赏
  • 举报
回复
关注
---涛声依旧--- 2005-05-03
  • 打赏
  • 举报
回复
這樣會掃瞄系統的所有表﹐速度會很慢的
不知有沒有更好的方法?
zjcxc 元老 2005-05-03
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_search]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_search]
GO

/*--搜索某个字符串在那个表的那个字段中

--邹建 2004.10(引用请保留此信息)--*/

/*--调用示例
use pubs
exec p_search N'l'
--*/
create proc p_search
@str Nvarchar(1000) --要搜索的字符串
as
if @str is null return

declare @s Nvarchar(4000)
create table #t(表名 sysname,字段名 sysname)

declare tb cursor local for
select s='if exists(select 1 from ['+replace(b.name,']',']]')+'] where ['+a.name+'] like N''%'+@str+'%'')
print ''所在的表及字段: ['+b.name+'].['+a.name+']'''
from syscolumns a join sysobjects b on a.id=b.id
where b.xtype='U' and a.status>=0
and a.xtype in(175,239,99,35,231,167)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
go

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧