SQL Server多表搜索字符串

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

我们前面介绍了一些关于SQL Server 的很多文章,今天我们主要介绍一下SQL Server下在不知道表名的情况下进行搜索字符串,我们都知道,在一个数据库下会有多张表单的时候,我们所要查找的内容不知道在哪个表单中,那怎么办呢?今天我们就通过编写SQL 语句来解决这个问题;

我们DB4数据库下测试创建了两张表,分别插入了一些数据;具体见下表;

我们测试在两张表中都插入了一条相同的数据,在uname字段中搜索zs这个字符串;

wKiom1nHV_CyGRuPAAEoFJdRwZM529.png-wh_50

我们编写的SQL 语句;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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表中的第一行中

wKiom1nHWAvQVpWuAAJZKZiKS0Y245.png-wh_50



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1968181,如需转载请自行联系原作者

相关文章
|
5月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
620 0
|
2月前
|
SQL
SQL中搜索中文无效或Select中文变乱码
SQL中搜索中文无效或Select中文变乱码
|
SQL 人工智能 关系型数据库
SQL玩转多模态AI,轻松搞定图片+文本混合搜索
本文介绍了一种通过原生SQL实现多模态智能检索的破局思路,基于PolarDB创新融合AI智能引擎,解决传统AI检索系统数据迁移冗余和工具链割裂的问题。方案优势包括低门槛AI集成、灵活适配多场景、全链路数据安全及按需付费免运维。文章详细描述了部署资源、应用配置及方案验证步骤,并提供清理资源指南以避免额外费用。适合希望快速构建智能搜索应用的开发者参考实践。
|
SQL XML JSON
在 SQL Server 中使用字符串转义
【8月更文挑战第5天】
1155 7
在 SQL Server 中使用字符串转义
|
12月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
11月前
|
SQL Oracle 关系型数据库
SQL语句中的引号使用技巧:正确处理字符串与标识符
在编写SQL语句时,引号的使用是一个基础且重要的环节
1476 0
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
410 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
263 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
169 6
|
SQL 存储 关系型数据库
SQL字符串查询有哪些坑?
本文通过创建一个包含不同格式姓名数据的表格,探讨了MySQL中字符排序规则(Collation)的影响。通过使用不区分大小写和空格的查询条件,文章演示了如何获取所有插入的记录,并解释了排序规则中&quot;_ci&quot;、&quot;_cs&quot;及&quot;_bin&quot;的区别。此外,还强调了在数据处理过程中,应考虑大小写敏感性和字符串前后空格的问题,以防导致统计或比较上的错误。最后,提供了Go语言中处理这类问题的方法,如使用`strings.EqualFold()`进行不区分大小写的字符串比较,以及使用`strings.TrimSpace()`去除字符串两端的空白字符。
136 1