SQL Server多表搜索字符串
我们前面介绍了一些关于SQL Server 的很多文章,今天我们主要介绍一下SQL Server下在不知道表名的情况下进行搜索字符串,我们都知道,在一个数据库下会有多张表单的时候,我们所要查找的内容不知道在哪个表单中,那怎么办呢?今天我们就通过编写SQL 语句来解决这个问题;
我们DB4数据库下测试创建了两张表,分别插入了一些数据;具体见下表;
我们测试在两张表中都插入了一条相同的数据,在uname字段中搜索zs这个字符串;
我们编写的SQL 语句;
declare @string varchar(30) set @string = 'zs' --替换为要查找的字符串 DECLARE @tabName VARCHAR(40),@colName VARCHAR(40) DECLARE @sql VARCHAR(2000) declare @tsql varchar(8000) DECLARE tabCursor CURSOR FOR SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties' OPEN tabCursor FETCH NEXT from tabCursor INTO @tabName WHILE @@fetch_status = 0 BEGIN set @tsql = '' DECLARE colCursor CURSOR FOR Select Name from SysColumns Where id=Object_Id(@tabName) and xtype=167 OPEN colCursor FETCH NEXT from colCursor INTO @colName WHILE @@fetch_status = 0 BEGIN SET @sql = 'if(exists(select * from ' + @tabName + ' where ' SET @sql = @sql + @colName + ' like ''%' + @string + '%'')) begin select * from ' set @sql = @sql + @tabName + ' where ' + @colName + ' like ''%' + @string + '%'';select ''' + @tabName + ''' as TableName end' set @tsql = @tsql + @sql + ';' FETCH NEXT from colCursor INTO @colName END exec(@tsql) CLOSE colCursor DEALLOCATE colCursor FETCH NEXT from tabCursor INTO @tabName END CLOSE tabCursor DEALLOCATE tabCursor
执行后,会显示执行结果;
搜索的字符串显示列信息及表信息;
结构zs字符串在info表中第一列,然后通过在tb_info表中的第一行中
转载于:https://blog.51cto.com/gaowenlong/1968181