查询整个数据库中某个特定值所在的表和字段的方法
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
前提是要将这个存储过程放在所查询的数据库。
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
相关文章推荐
- SQLSERVER查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- mysql查询某个特定值在整个数据库中所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- SQLSERVER查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法
- 查询整个数据库中某个特定值所在的表和字段的方法