在DB中查找所有表的字符串字段是否有指定值


declare @TableName nvarchar(100),@ColName nvarchar(100),@SQL nvarchar(4000),@TableID int,@FindValue nvarchar(100)

SET @FindValue = 'sp_CopyInterventionDffToInspectionReportDff'

DECLARE TCur Cursor
 FOR SELECT NAME,ID FROM sysobjects
  WHERE Xtype = 'U'
OPEN TCur
FETCH NEXT FROM TCur INTO @TableName,@TableID

WHILE @@FETCH_STATUS = 0
BEGIN
 DECLARE CCur CURSOR
  FOR SELECT Name FROM syscolumns WHERE ID = @TableID AND Xtype = 231
 OPEN CCur
 FETCH NEXT FROM CCur INTO @ColName

 WHILE @@FETCH_STATUS = 0
 BEGIN
  SET @SQL = 'IF EXISTS(SELECT * FROM ' + @TableName + ' WHERE ' + @ColName + ' = ''' + @FindValue + ''')'
  SET @SQL = @SQL + 'PRINT ''' + @TableName + ''' + '' + '' + ''' + @ColName + ''''
  EXEC (@SQL)
  --print @sql

  FETCH NEXT FROM CCur INTO @ColName
 END
 CLOSE CCur
 DEALLOCATE CCur
  
 FETCH NEXT FROM TCur INTO @TableName,@TableID
END
CLOSE TCur
DEALLOCATE TCur

原文地址:https://www.cnblogs.com/micolour/p/2397446.html