sql server 知道一个值叫李林.如何查询这个库.里面所有与李林有关的表和字段.

在sqlserver中.在一个test库里面有200多张表.具体每个表的字段也不是很清楚.但是我只知道.其中的一个表.有一个字段.里面输入的是'李林'这个字段..然后我想... 在sql server 中.在一个test库里面有200多张表.具体每个表的字段也不是很清楚.但是我只知道.其中的一个表.有一个字段.里面输入的是'李林' 这个字段..然后我想通过语句来查询..所有关于这个字段的的关键字..
并找到他是在哪个表里面的那个字段里面
展开
 我来答
匿名用户
2016-05-05
展开全部
CREATE PROCEDURE [dbo].[findStringFromSys]
-- Add the parameters for the stored procedure
@StringName varchar(255)
AS
BEGIN

--1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'
DECLARE @key_find NVARCHAR(MAX) = @StringName;--假设是找字符串"123"

--2.用游标Cursor_Table,遍历所有表
DECLARE Cursor_Table CURSOR FOR
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties';
OPEN Cursor_Table;
DECLARE @tableName NVARCHAR(MAX);
FETCH NEXT from Cursor_Table INTO @tableName;
WHILE @@fetch_status = 0
BEGIN
DECLARE @tempSQLText NVARCHAR(MAX) = '';

--3.在表中,用游标columnCursor,遍历所有字段。注意,只遍历字符串类型的字段(列)
DECLARE columnCursor CURSOR FOR
SELECT Name FROM SysColumns WHERE ID = Object_Id( @tableName ) and
(
xtype = 35 or --text
xtype = 99 or --ntext
xtype = 167 or --varchar
xtype = 175 or --char
xtype = 231 or --nvarchar
xtype = 239 or --nchar
xtype = 241 --xml
)
OPEN columnCursor;
DECLARE @columnName NVARCHAR(MAX);
FETCH NEXT from columnCursor INTO @columnName;
WHILE @@fetch_status = 0
BEGIN

--4.在表的字段中,对每一行进行模糊搜索,并输出找到的信息。
DECLARE @DynamicSQLText NVARCHAR(MAX) = 'IF ( EXISTS ( SELECT * FROM [' + @tableName + '] WHERE [' + @columnName + '] LIKE ''%' + @key_find + '%'' ) ) BEGIN DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] ); PRINT ''Find : Table [' + @tableName + '], Column [' + @columnName + '], Row Count:'' + CAST( @CurrentTableCount AS NVARCHAR(MAX) ) + ''.''; END';
EXEC( @DynamicSQLText );
FETCH NEXT from columnCursor INTO @columnName
END
exec(@tempSQLText);
CLOSE columnCursor;
DEALLOCATE columnCursor;
FETCH NEXT from Cursor_Table INTO @tableName;
END
CLOSE Cursor_Table;
DEALLOCATE Cursor_Table;

END

GO
可以检索字符串在数据中哪个表中。数据库数据量越大,查询时间越慢。
追问
百度已回答过的.都测试了.在2008里面.没找到我输入的关键词
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式