根据表中包含的值搜索表

时间:2013-03-14 14:33:47

标签: sql sql-server tsql

我有一个带有reason_id外键的表。我需要将其映射回其主表。我在数据库中搜索了匹配/类似的列名,但我找不到该表。

我有一个与reason_id相关联的值列表。我想搜索包含我的列表的表。任何帮助,将不胜感激。

以下是我为搜索列而运行的查询:

select 
  t.name as Table_Name,
  SCHEMA_NAME(schema_id) as schema_name,
  c.name as Column_Name
from
  sys.tables as t
  inner join 
  sys.columns c
  on
  t.OBJECT_ID = c.OBJECT_ID
where 
  c.name like '%reason%'

1 个答案:

答案 0 :(得分:0)

没有简单的方法可以在其他表格中找到相关数据。

我尝试使用ApexSQL SearchSQL Search等工具。两者都是免费的,任何这些都不会出错。

如果您只想使用SQL,则识别所有具有相同数据类型的表中的所有列。为此,请使用sys.columns, sys.types and sys.tables次观看。一旦找到所有列,只需尝试开始为每个表编写查询,直到找到正确的列。

我会选择这样的东西

select COUNT(*)
from tableX
where tableX.matchedColumn in
(
    -- take 100 or more random rows from the original table
    -- if result gives you a number that is near to the number of values listed here then you are most probably on the right track
)