日期:2014-05-17  浏览次数:20462 次

求一条查看数据库中那些表包含指定字段的语句
在一个数据库里 有400多张表,我知道一条语句可以查找该数据库中含有指定字段"材料名称")(一个)的表和视图
select * from information_schema.columns where column_name = '材料名称' 
但是我想查询这个数据库中含有指定的2个字段的表和视图(例如查看那些表或视图同时有"材料名称"和"材料编码"的字段) 请问有这样的语句能实现吗? 
测试过 select * from information_schema.columns where column_name = '材料名称' and column_name='材料编码'  不行 找不到任何数据

------解决方案--------------------


SELECT  *
FROM    ( SELECT    a.name 'TabName' ,
                    b.name 'ColName'
          FROM      sys.tables a
                    INNER JOIN sys.columns b ON a.object_id = b.object_id
          WHERE     b.name IN ( '材料名称', '材料编码' )
        ) a
WHERE   EXISTS ( SELECT 1
                 FROM   ( SELECT    a.name 'TabName' ,
                    b.name 'ColName'
          FROM      sys.tables a
                    INNER JOIN sys.columns b ON a.object_id = b.object_id
          WHERE     b.name IN ( '材料名称', '材料编码' )
        ) b
                 WHERE  b.TabName = a.TabName
                        AND a.ColName <> b.ColName )
ORDER BY a.TabName