您的位置:首页 > 数据库

查询整个数据库中某个特定值所在的表和字段的方法

2012-07-17 10:45 393 查看
有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。

前提是要将这个存储过程放在所查询的数据库。


CodeCREATE
PROCEDURE
[dbo].[SP_FindValueInDB]

(

@value
VARCHAR(1024)

)

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT
ON;

DECLARE
@sql
VARCHAR(1024)

DECLARE
@table
VARCHAR(64)

DECLARE
@column
VARCHAR(64)

CREATE
TABLE #t (

tablename VARCHAR(64),

columnname VARCHAR(64)

)

DECLARE TABLES
CURSOR

FOR

SELECT o.name, c.name

FROM syscolumns c

INNER
JOIN sysobjects o
ON c.id
= o.id

WHERE o.type
=
'U'
AND c.xtype
IN (167,
175,
231,
239)

ORDER
BY o.name, c.name

OPEN TABLES

FETCH
NEXT
FROM TABLES

INTO
@table,
@column

WHILE
@@FETCH_STATUS
=
0

BEGIN

SET
@sql
=
'IF EXISTS(SELECT NULL FROM ['
+
@table
+
']
'

SET
@sql
=
@sql
+
'WHERE RTRIM(LTRIM(['
+
@column
+
'])) LIKE
''%'
+
@value
+
'%'')
'

SET
@sql
=
@sql
+
'INSERT INTO #t VALUES ('''
+
@table
+
''',
'''

SET
@sql
=
@sql
+
@column
+
''')'

EXEC(@sql)

FETCH
NEXT
FROM TABLES

INTO
@table,
@column

END

CLOSE TABLES

DEALLOCATE TABLES

SELECT
*

FROM #t

DROP
TABLE #t

End
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: