全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 1412|回复: 13
打印 上一主题 下一主题

想在mssql查询一条数据..在哪里个表里,.这句子怎样写

[复制链接]
跳转到指定楼层
1#
发表于 2018-8-20 15:03:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如查询 张三
在mssql 里 "饭堂" 数据库里有N个表...我想知道张三在哪几个表出现了,这句子怎样写?
11#
发表于 2018-8-20 17:52:18 | 只看该作者




  1. USE 数据库名
  2. GO

  3. DECLARE @key VARCHAR(30)
  4. SET @key = 'admin'
  5. DECLARE @tabName VARCHAR(40),@colName VARCHAR(40)
  6. DECLARE @sql VARCHAR(2000)
  7. DECLARE @tsql VARCHAR(8000)

  8. DECLARE tabCursor CURSOR FOR
  9. SELECT name FROM sysobjects WHERE xtype = 'u' AND name <> 'dtproperties'
  10. OPEN tabCursor
  11. FETCH NEXT FROM tabCursor INTO @tabName
  12. WHILE @@fetch_status = 0
  13. BEGIN
  14.         SET @tsql = ''
  15.         DECLARE colCursor CURSOR FOR
  16.         SELECT Name FROM SysColumns WHERE id=Object_Id(@tabName) and xtype=167
  17.         OPEN colCursor
  18.         FETCH NEXT FROM colCursor INTO @colName
  19.         WHILE @@fetch_status = 0
  20.         BEGIN
  21.                 SET @sql = 'if(exists(select * from ' + @tabName + ' where '
  22.                 SET @sql = @sql + @colName + ' like ''%' + @key + '%'')) begin  select * from '
  23.                 SET @sql = @sql + @tabName + ' where ' + @colName + ' like ''%' + @key + '%'';select '''
  24.                 + @tabName + ''' as TableName  end'
  25.                 SET @tsql = @tsql + @sql + ';'
  26.                
  27.                 FETCH NEXT FROM colCursor INTO @colName
  28.         END
  29.         EXEC(@tsql)
  30.         CLOSE colCursor
  31.         DEALLOCATE colCursor
  32.        
  33.         FETCH NEXT FROM tabCursor INTO @tabName
  34. END
  35. CLOSE tabCursor
  36. DEALLOCATE tabCursor
复制代码


你再到其他库试试?
10#
 楼主| 发表于 2018-8-20 16:42:41 | 只看该作者
funders 发表于 2018-8-20 16:34
不应该啊,把脚本里admin替换成你要找的字符串,我之前用这个绝对可以的

QQ截图20180820163629.jpg (26.1 KB, 下载次数: 0)
9#
发表于 2018-8-20 16:34:09 | 只看该作者
vpswz 发表于 2018-8-20 16:29
刚试了..没有返回结果 就一句 命令已成功完成。

这个要怎样搞

不应该啊,把脚本里admin替换成你要找的字符串,我之前用这个绝对可以的
8#
发表于 2018-8-20 16:32:18 | 只看该作者
这个操作很皮啊。  初期把数据库结构给做丑了吗?
7#
 楼主| 发表于 2018-8-20 16:29:50 | 只看该作者
funders 发表于 2018-8-20 15:56
我知道 但是没有金币就不告诉你
算了 不要金币了

刚试了..没有返回结果 就一句 命令已成功完成。

这个要怎样搞
6#
 楼主| 发表于 2018-8-20 16:27:53 | 只看该作者
funders 发表于 2018-8-20 15:56
我知道 但是没有金币就不告诉你
算了 不要金币了


谢了...

700多个表....

我刚用写了个工具穷举...

“bw_tab_fielddesc”, 用时75秒
5#
发表于 2018-8-20 16:13:05 | 只看该作者
funders 发表于 2018-8-20 15:56
我知道 但是没有金币就不告诉你
算了 不要金币了

大佬啊..真是可爱
4#
发表于 2018-8-20 15:56:02 | 只看该作者
本帖最后由 funders 于 2018-8-20 15:59 编辑

我知道 但是没有金币就不告诉你
算了 不要金币了

  1. declare @key varchar(30)
  2. set @key = 'admin' --要查找的字符串
  3. declare @tabName varchar(40),@colName varchar(40)
  4. declare @sql varchar(2000)
  5. declare @tsql varchar(8000)
  6. declare tabCursor cursor for
  7. select name from sysobjects where xtype = 'u' AND name <> 'dtproperties' --查询所有用户表的名称
  8. open tabCursor
  9. fetch NEXT from tabCursor into @tabName
  10. while @@fetch_status = 0
  11. begin
  12. set @tsql = ''
  13. declare colCursor cursor for
  14. select name from SysColumns where id=Object_Id(@tabName) and xtype=167 and length=50 --查询所有用户表的列名称
  15. open colCursor
  16. fetch NEXT from colCursor into @colName
  17. while @@fetch_status = 0
  18. begin
  19. set @sql = 'if(exists(select * from ' + @tabName + ' where '
  20. set @sql = @sql + @colName + ' like ''%' + @key + '%'')) begin select * from '
  21. set @sql = @sql + @tabName + ' where ' + @colName + ' like ''%' + @key + '%'';select '''
  22. + @tabName + ''' as TableName end'
  23. set @tsql = @tsql + @sql + ';'
  24. fetch NEXT from colCursor into @colName
  25. end
  26. exec(@tsql)
  27. close colCursor
  28. deallocate colCursor
  29. fetch NEXT from tabCursor into @tabName
  30. end
  31. close tabCursor
  32. deallocate tabCursor
复制代码


不用谢
3#
发表于 2018-8-20 15:47:58 来自手机 | 只看该作者
等于要查询整个数据库?不可能吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-1-14 17:56 , Processed in 0.071439 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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