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

由于没有系统的源码和开发文档,系统的表有200多个,所有可猜测到的表命名规则都找了都找不到。有没有什么方法可以通过一个已知的值,找到这个值所在的表?
http://zhidao.baidu.com/question/48726567.html#irelatelink
这里搜到一个方法,但我没有执行成功,应该是要建一个存储过程吧?

1、首先新建一张最简单的数据库表,id自增长。

2、然后在表中插入重复值。

3、接着新建视图,首先要确定自己的删除规则是什么样的,删除编号id比较大的还是比较小的。

4、然后将视图select语句粘贴到删除语句后面,执行删除语句。

5、最后查看删除后结果,就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-28

1、当这个数据为数据库中的某一列的列名的时候,我们如何通过该列名获取到表名呢?登录mysql的客户端,并输入sql语句select * from columns where column_name='DEPT_NAME';其中DEPT_NAME为查找的列名。

2、点击上图的运行按钮,执行该命令,可以看到运行结果如下所示,列名为DEPT_NAME的表为department。

本回答被网友采纳
第2个回答  推荐于2017-10-15

可用如下代码实现:

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

如本题,是查找库中,包含“张三”的数据的表。

结果如图:

第3个回答  推荐于2017-09-16
目前没有这种专用工具,鉴于你的表如此之多,也没有好的办法。

导数据出来检测是最笨的办法,工作量非常大。

如果可能建议询问开发系统的公司或者作者。

或者,如果是SQL SERVER的数据库,如果没有加密的话,可以打开跟踪器,看写入值的时候往哪个表哪个字段写值。不过前提是,你知道在系统里的哪一个模块里写那个数值。这或许会简单一点,但是,大部分的数据库管理系统都没有提供这种跟踪器。不过,所有的数据库系统都会写日志,你可以打开日志,查看。不过没有SQL SERVER的跟踪器直观。

有时需要运气,祝你好运!本回答被提问者采纳
第4个回答  2009-03-18
告诉你个好办法,如果数据量有限,可能的话,你把数据导出成文本格式。
然后用随便一个文本编辑器,查找你要的字串。
找到以后看看周围的SQL,就知道你找的值存在哪个表了。

虽然是土办法,不过最有效了。
但是如果数据量非常大,就写一个小工具遍历表和列去找值吧,我想应该再没别的办法了