永发信息网

如何通过一个值查找到值所在的SQL数据库表?

答案:4  悬赏:50  手机版
解决时间 2021-04-04 07:04
  • 提问者网友:你独家记忆
  • 2021-04-04 01:10
如何通过一个值查找到值所在的SQL数据库表?
最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-04-04 01:45
可用如下代码实现:

declare @cloumns varchar(40)
declare @tablename varchar(40)
declare @str varchar(40)
declare @counts int
declare @sql nvarchar(2000)
declare MyCursor Cursor For 
Select a.name as Columns, b.name as TableName from syscolumns a,sysobjects b,systypes c 
where a.id = b.id
and b.type = 'U' 
and a.xtype=c.xtype
and c.name like '%char%'
set @str='张三'
Open MyCursor
Fetch next From MyCursor Into @cloumns,@tablename
While(@@Fetch_Status = 0)
Begin
 set @sql='select  @tmp_counts=count(*) from ' +@tablename+ ' where ' +@cloumns+' = ''' +@str+ ''''
execute sp_executesql  @sql,N'@tmp_counts int out',@counts out
 if @counts>0
 begin
 print '表名为:'+@tablename+',字段名为'+@cloumns
 end
Fetch next From MyCursor Into @cloumns,@tablename
End
Close MyCursor
Deallocate MyCursor如本题,是查找库中,包含“张三”的数据的表。

结果如图:

全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-04-04 04:10
告诉你个好办法,如果数据量有限,可能的话,你把数据导出成文本格式。
然后用随便一个文本编辑器,查找你要的字串。
找到以后看看周围的SQL,就知道你找的值存在哪个表了。
虽然是土办法,不过最有效了。
但是如果数据量非常大,就写一个小工具遍历表和列去找值吧,我想应该再没别的办法了
  • 2楼网友:独钓一江月
  • 2021-04-04 03:15
select * from sysobjects
select * from syscolumns
查询数据表所有列名称,tablename是你要找的表名
select * from syscolumns where id=object_id ('tablename')
根据字段名称查找表名称,找出字段名有fieldname的所有表
select a.name from sysobjects a,syscolumns b where a.id = b.id and b.name = 'fieldname'
  • 3楼网友:舍身薄凉客
  • 2021-04-04 01:50
目前没有这种专用工具,鉴于你的表如此之多,也没有好的办法。
导数据出来检测是最笨的办法,工作量非常大。
如果可能建议询问开发系统的公司或者作者。
或者,如果是SQL SERVER的数据库,如果没有加密的话,可以打开跟踪器,看写入值的时候往哪个表哪个字段写值。不过前提是,你知道在系统里的哪一个模块里写那个数值。这或许会简单一点,但是,大部分的数据库管理系统都没有提供这种跟踪器。不过,所有的数据库系统都会写日志,你可以打开日志,查看。不过没有SQL SERVER的跟踪器直观。
有时需要运气,祝你好运!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯