SQL Server多表搜索字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server多表搜索字符串相关的知识,希望对你有一定的参考价值。

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表中的第一行中

技术分享

本文出自 “高文龙” 博客,谢绝转载!

以上是关于SQL Server多表搜索字符串的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server 代码片段收集

缺少 SQL SERVER 2014 代码片段

mybatis-基于xml的多表查询

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

sql server 多表查询

SQL Server存储过程选择,存在,多表