度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1290|回复: 6
打印 上一主题 下一主题

[分享] SQLSERVER查询整个数据库中某个特定值所在的表和字段的方法

[复制链接]

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
跳转到指定楼层
楼主
发表于 2020-2-23 17:38:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天有业务部门需要使用一个SAP B1老系统  中的报表,但是由于此报表没有加时间条件,导致一旦开始查询 就会导致B1系统异常退出。由于报表对应的SQL 是存在数据库中,所以想通过查找到这个报表的SQL,然后给SQL加时间条件的方式来处理(多年前的一个报表,不知道内部逻辑,很难重写)。
     但是苦于不清楚报表相关的表结构,不知道报表的存储位置,但只知道报表的名称 又陷入了不知道下一步该怎么处理的窘境。于是又开始大胆猜想,是不是有什么方法 可以根据数据的关键词 查询数据所在的表名呢?于是开始百度各种资料,证明 思路是可以行得通的,大致思路就是遍历每一个表的每一个字段 查询此字段是否包含关键词 。最终查到这篇文章写的方法 很不错,和大家分享下,同时也感谢博主的分享。https://blog.csdn.net/zengcong2013/article/details/55264202
  1. CREATE PROCEDURE [dbo].[SP_FindValueInDB]
  2. (
  3.     @value VARCHAR(1024)
  4. )
  5. AS
  6. BEGIN
  7.     SET NOCOUNT ON;
  8.     DECLARE @sql VARCHAR(1024)
  9.     DECLARE @table VARCHAR(64)
  10.     DECLARE @column VARCHAR(64)
  11.     CREATE TABLE #t (
  12.         tablename VARCHAR(64),
  13.         columnname VARCHAR(64)
  14.     )
  15.     DECLARE TABLES CURSOR FOR
  16.     SELECT o.name, c.name FROM syscolumns c
  17.     INNER JOIN sysobjects o ON c.id = o.id
  18.     WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239)
  19.     ORDER BY o.name, c.name
  20.     OPEN TABLES
  21.         FETCH NEXT FROM TABLES
  22.         INTO @table, @column
  23.         WHILE @@FETCH_STATUS = 0
  24.         BEGIN
  25.             SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] '
  26.             SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') '
  27.             SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', '''
  28.             SET @sql = @sql + @column + ''')'
  29.             EXEC(@sql)
  30.             FETCH NEXT FROM TABLES
  31.             INTO @table, @column
  32.         END
  33.     CLOSE TABLES
  34.     DEALLOCATE TABLES
  35.     SELECT * FROM #t
  36.     DROP TABLE #t
  37. End
复制代码
只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。
exec [SP_FindValueInDB  '仓库转储申请单'

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
沙发
 楼主| 发表于 2020-2-26 17:23:08 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
板凳
 楼主| 发表于 2020-2-26 17:24:05 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
地板
 楼主| 发表于 2020-2-27 17:34:18 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
5#
 楼主| 发表于 2020-2-27 17:34:44 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
6#
 楼主| 发表于 2020-2-28 17:47:24 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
7#
 楼主| 发表于 2020-2-28 17:47:55 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-1 10:23 , Processed in 0.158270 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表