/****** StoredProcedure ******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[StringSearchDb]@DataToFindNVARCHAR(4000),@ExactMatchBIT=0ASSETNOCOUNTONDECLARE@TempStringSearchDbTABLE(RowIdINTIDENTITY(1,1),SchemaNamesysname,TableNamesysname,ColumnNameSysName,DataTypeVARCHAR(100),DataFoundBIT)INSERTINTO@TempStringSearchDb(TableName,SchemaName,ColumnName,DataType)SELECTC.Table_Name,C.TABLE_SCHEMA,C.Column_Name,C.Data_TypeFROMInformation_Schema.ColumnsASCINNERJoinInformation_Schema.TablesASTONC.Table_Name=T.Table_NameANDC.TABLE_SCHEMA=T.TABLE_SCHEMAWHERETable_Type='Base Table'AndData_TypeIn('ntext','text','nvarchar','nchar','varchar','char')DECLARE@iINTDECLARE@MAXINTDECLARE@TableNamesysnameDECLARE@ColumnNamesysnameDECLARE@SchemaNamesysnameDECLARE@SQLNVARCHAR(4000)DECLARE@PARAMETERSNVARCHAR(4000)DECLARE@DataExistsBITDECLARE@SQLTemplateNVARCHAR(4000)SELECT@SQLTemplate=CASEWHEN@ExactMatch=1THEN'If Exists(Select *
From ReplaceTableName
Where Convert(nVarChar(4000), [ReplaceColumnName])
= '''+@DataToFind+'''
)
Set @DataExists = 1
Else
Set @DataExists = 0'ELSE'If Exists(Select *
From ReplaceTableName
Where Convert(nVarChar(4000), [ReplaceColumnName])
Like ''%'+@DataToFind+'%''
)
Set @DataExists = 1
Else
Set @DataExists = 0'END,@PARAMETERS='@DataExists Bit OUTPUT',@i=1SELECT@i=1,@MAX=MAX(RowId)FROM@TempStringSearchDbWHILE@i<=@MAXBEGINSELECT@SQL=REPLACE(REPLACE(@SQLTemplate,'ReplaceTableName',QUOTENAME(SchemaName)+'.'+QUOTENAME(TableName)),'ReplaceColumnName',ColumnName)FROM@TempStringSearchDbWHERERowId=@iPRINT@SQLEXECSP_EXECUTESQL@SQL,@PARAMETERS,@DataExists=@DataExistsOUTPUTIF@DataExists=1UPDATE@TempStringSearchDbSETDataFound=1WHERERowId=@iSET@i=@i+1ENDSELECTSchemaName,TableName,ColumnNameFROM@TempStringSearchDbWHEREDataFound=1