SQL:查询特定值和返回表名称的整个架构

时间:2014-01-24 04:26:13

标签: sql database vba

我不得不在VBA代码中嵌入SQL以从公司的数据库中获取信息的更多冒险...我们的数据库可能有几千个数据库表,所以如果你正在寻找特定的东西,你必须做一个很多东西(特别是如果表的名称不像“ITEMS”那样直观)。

我对我正在寻找的列标题的调用有一个大概的了解,并且遇到了这个代码来找到它:

SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'DATABASE'
AND COLUMN_NAME LIKE '%MFGR%';

这返回了包含%MFGR%的列的所有表的名称...找到我需要的表非常快......比任意导入看起来像它们的表快得多。

无论如何,更好的方法是让查询返回包含任何列中某个值的所有表的名称。通常我不知道列的名称是什么,但知道其中一个值是什么。我只是想知道哪些表包含它所以我可以看看它们。

结果不断出现:http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm

听起来它可能会奏效,但有更简单的方法吗?我还没有尝试过把它放到VBA代码中。

编辑:看一下代码,看起来它涉及操纵我无权访问的数据库(创建程序,创建表等)。无论如何这样做只是作为一个查询?

1 个答案:

答案 0 :(得分:0)

请使用以下查询输出,其中database是数据库的名称:

SELECT DISTINCT T.name 
FROM   database.sys.columns C 
       LEFT OUTER JOIN database.sys.tables T 
                    ON T.object_id = C.object_id 
WHERE  C.name LIKE '%name%'