您的位置:首页 > 数据库

MSSQL 查询某个值在哪个表哪个字段 及 实用SQL 锦集 同事分享的.感谢

2013-06-06 01:10 453 查看
查数据库是否存在:select * From master.dbo.sysdatabases where name='test2'
跨数据库查询: select *
from OPENDATASOURCE('SQLOLEDB','server=192.168.2.251;
uid=sa;pwd=hzya924;database=Hayz_JJ_ERP').Hayz_JJ_ERP.dbo.T_Equipment
查看表列名及说明:select   a.name   列名,isnull(cast(c.value   as   varchar(8000)), ' ')   描述   from   syscolumns   a
left   join   sysproperties   c   on   a.id   =   c.id   and
a.colid=c.smallid   where   a.id=object_id( 'System_Table ')
查看触发器是否存在:select * from sysobjects where id=object_id(N'trutest_id_delete') and objectproperty(id,N'IsTrigger')=1

模糊查询整个数据库中的关键字:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Full_Search]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Full_Search]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE proc Full_Search(@string varchar(50))
as
begin
declare @t table  (
所在表 varchar(50),
所在列 varchar(50),
辅助查询语句 nvarchar(1000)
)
declare @tbname varchar(50)
declare tbroy cursor  for select name from sysobjects
where xtype='u'   --第一个游标遍历所有的表

open tbroy
fetch next from tbroy into @tbname
while @@fetch_status=0
begin

declare @colname varchar(50)
declare colroy cursor for select a.name
from syscolumns  a inner join systypes b on a.xtype=b.xtype
where a.id=object_id(@tbname) and b.name in ('varchar','nvarchar','char','nchar')

--数据类型为字符型的字段
open colroy
fetch next from colroy into @colname
while @@fetch_status=0
begin

declare @sql nvarchar(1000),@i int
set @sql='select @i=count(1) from '+@tbname+' where '+@colname+' like ''%'+@string+'%'''
exec sp_executesql @sql,N'@i int output',@i output   --输出满足条件表的记录数
if @i>0
begin
set @sql='select * from '+@tbname+' where '+@colname+' like ''%'+@string+'%'''
insert into @t values(@tbname,@colname,@sql)
end

fetch next from colroy into @colname
end

close colroy
deallocate colroy

fetch next from tbroy into @tbname
end
close tbroy
deallocate tbroy
if not exists(select 1 from @t)
print '字符串 "'+@string +'" 在当前数据库里不存在!'
else
select * from @t
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
EXEC Full_Search '22' -- 22 即为要查找的字段值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: