根据某条记录中某一列内容 找到该内容位于那些表中并且输出表名和列名
IF (OBJECT_ID('searchPropertyFrom','P') IS NOT NULL) DROP PROC searchPropertyFrom
GO
CREATE PROCEDURE searchPropertyFrom( @value VARCHAR(1024))
AS
BEGIN
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 myCursor CURSOR
FOR
SELECT O.name, C.name
FROM SYSCOLUMNS C
INNER JOIN SYSOBJECTS O ON C.id = O.id
WHERE O.type = 'U'
ORDER BY O.name, C.name
OPEN myCursor
FETCH NEXT FROM myCursor
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 myCursor
INTO @table, @column
END
CLOSE myCursor
DEALLOCATE myCursor
SELECT *
FROM #t
DROP TABLE #t
End
GO
EXEC searchPropertyFrom '2008FC1D-CCFF-4CE7-BC13-6AF3BE98FF5C' --根据GUID找到属于那张表
输出结果: