SET NOCOUNT ON DECLARE @Missing varchar(100) SET @Missing = 'abc' --Searches for 'abc' SELECT Haystack = TABLE_NAME INTO Pitchfork FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' SELECT Haystack, COLUMN_NAME AS Needle INTO Iowa FROM Pitchfork JOIN INFORMATION_SCHEMA.COLUMNS ON TABLE_NAME = Haystack AND DATA_TYPE LIKE '%char' CREATE TABLE PigsEar (SilkPurse varchar(1000)) DECLARE @FarmQuery varchar(1000) SET @FarmQuery = 'INSERT INTO PigsEar SELECT TOP 1 SilkPurse=''Found ' + REPLACE(@Missing,'''','''''') + ' in HAYSTACK.NEEDLE'' FROM HAYSTACK WHERE ' + 'NEEDLE = ' + QUOTENAME(@Missing,'''') --if you need find the string as a substring of a column value, change --the above line to --'NEEDLE LIKE ' + QUOTENAME('%'+@Missing+'%','''') --Leave it as is if you want to find the string as an exact match of a --column value. DECLARE @Murderer varchar(1000) DECLARE @Haystack sysname DECLARE @Needle sysname DECLARE Investigation CURSOR FOR SELECT Needle, Haystack FROM Iowa WHERE Haystack <> 'Pitchfork' OPEN Investigation DECLARE @Miracle int FETCH NEXT FROM Investigation INTO @Needle,@Haystack WHILE @@FETCH_STATUS = 0 BEGIN SET @Murderer = REPLACE(REPLACE(@FarmQuery,'NEEDLE',quotename(@Needle)), 'HAYSTACK',quotename(@Haystack)) exec (@Murderer) SELECT @Miracle = COUNT(SilkPurse) FROM PigsEar FETCH NEXT FROM Investigation INTO @Needle,@Haystack END IF @Miracle IS NULL PRINT '['+@Missing+'] not found' ELSE SELECT SilkPurse FROM PigsEar DEALLOCATE Investigation go DROP TABLE Pitchfork DROP TABLE Iowa DROP TABLE PigsEar