找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 64|回复: 8

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

[复制链接]

473

主题

1593

回帖

4705

积分

论坛元老

积分
4705
发表于 2018-8-20 15:03:30 | 显示全部楼层 |阅读模式
如查询 张三
在mssql 里 "饭堂" 数据库里有N个表...我想知道张三在哪几个表出现了,这句子怎样写?
回复

使用道具 举报

128

主题

487

回帖

1502

积分

金牌会员

积分
1502
发表于 2018-8-20 15:06:56 | 显示全部楼层
等于要查询整个数据库?不可能吧
回复

使用道具 举报

157

主题

3652

回帖

7861

积分

论坛元老

积分
7861
发表于 2018-8-20 15:47:58 | 显示全部楼层
本帖最后由 funders 于 2018-8-20 15:59 编辑

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

[ol]
  • declare @key varchar(30)
  • set @key = 'admin' --要查找的字符串
  • 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 and length=50 --查询所有用户表的列名称
  • 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 ''%' + @key + '%'')) begin select * from '
  • set @sql = @sql + @tabName + ' where ' + @colName + ' like ''%' + @key + '%'';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[/ol]复制代码

    不用谢
  • 回复

    使用道具 举报

    95

    主题

    1395

    回帖

    3117

    积分

    论坛元老

    积分
    3117
    发表于 2018-8-20 15:56:02 | 显示全部楼层

    funders 发表于 2018-8-20 15:56

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

    大佬啊..真是可爱
    回复

    使用道具 举报

    473

    主题

    1593

    回帖

    4705

    积分

    论坛元老

    积分
    4705
     楼主| 发表于 2018-8-20 16:13:05 | 显示全部楼层

    funders 发表于 2018-8-20 15:56

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


    谢了...

    700多个表....

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

    “bw_tab_fielddesc”, 用时75秒
    回复

    使用道具 举报

    473

    主题

    1593

    回帖

    4705

    积分

    论坛元老

    积分
    4705
     楼主| 发表于 2018-8-20 15:56:00 | 显示全部楼层

    funders 发表于 2018-8-20 15:56

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

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

    这个要怎样搞
    回复

    使用道具 举报

    918

    主题

    1535

    回帖

    5924

    积分

    论坛元老

    积分
    5924
    发表于 2018-8-20 16:27:53 | 显示全部楼层
    这个操作很皮啊。  初期把数据库结构给做丑了吗?

    回复

    使用道具 举报

    157

    主题

    3652

    回帖

    7861

    积分

    论坛元老

    积分
    7861
    发表于 2018-8-20 15:56:00 | 显示全部楼层

    vpswz 发表于 2018-8-20 16:29

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

    这个要怎样搞

    不应该啊,把脚本里admin替换成你要找的字符串,我之前用这个绝对可以的
    回复

    使用道具 举报

    0

    主题

    1

    回帖

    4

    积分

    新手上路

    积分
    4
    发表于 2018-8-20 16:29:50 | 显示全部楼层

    funders 发表于 2018-8-20 16:34

    不应该啊,把脚本里admin替换成你要找的字符串,我之前用这个绝对可以的




    vpswz 发表于 2018-8-20 16:42





    [ol]
  • USE 数据库名
  • GO
  • DECLARE @key VARCHAR(30)
  • SET @key = 'admin'
  • 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 ''%' + @key + '%'')) begin  select * from '
  •                 SET @sql = @sql + @tabName + ' where ' + @colName + ' like ''%' + @key + '%'';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[/ol]复制代码

    你再到其他库试试?
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    回复

    使用道具 举报

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

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-4-20 05:01 , Processed in 0.018857 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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