Declare @TN as varchar(200), @CN as varchar(200), @myValue varchar(30), @SQL as nvarchar(1000) , @SN as varchar(200), @Exact_Match bit Create Table #myTable (Table_Name varchar(200), Column_Name varchar(200), Number_Of_Rows int) -- Replace @myValue with the value you're searching for in the database Set @myValue = 'mySearchValue' -- 0 for LIKE match, 1 for exact match Set @Exact_Match = 0 Declare myCursor Cursor For Select T.Table_Name, C.Column_Name, T.Table_Schema From INFORMATION_SCHEMA.TABLES T Inner Join INFORMATION_SCHEMA.COLUMNS C On T.Table_Schema = C.Table_Schema And T.Table_Name = C.Table_Name Where T.Table_Name Not In ('dtproperties') And Table_Type = 'Base Table' And C.Data_Type In ('varchar','char','nvarchar','nchar','sql_variant') --And C.Data_Type In ('text','ntext') --And C.Data_Type In ('tinyint','int','bigint','numeric','decimal','money','float','smallint','real','smallmoney') --And C.Data_Type In ('datetime','dmalldatetime') -- Fields not searched: image, uniqueidentifier, bit, varbinary, binary, timestamp Open myCursor Fetch Next From myCursor Into @TN, @CN, @SN While @@Fetch_Status <> -1 Begin If @Exact_Match = 0 Set @SQL = N'Insert Into #myTable Select ''' + @SN + '.' + @TN + ''', ''' + @CN + ''', Count(*) From [' + @SN + '].[' + @TN + '] Where [' + @CN + '] Like ''%' + @myValue + '%''' Else Set @SQL = N'Insert Into #myTable Select ''' + @SN + '.' + @TN + ''', ''' + @CN + ''', Count(*) From [' + @SN + '].[' + @TN + '] Where [' + @CN + '] = ''' + @myValue + '''' --Print @SQL Exec sp_executesql @SQL Fetch Next From myCursor Into @TN, @CN, @SN End Close myCursor Deallocate myCursor Select * From #myTable Where Number_Of_Rows > 0 Order By Table_Name Drop Table #myTable
Tuesday, 10 May 2011
SQL Search for a String in all Tables
Labels:
SQL,
String Search,
Tables
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment