我想查找数据库(在SQLServer中)中所有具有特定值“SAM”的列IDName的表,例如IDName ='SAM'。因此,我的初始方法是创建一个具有所有具有列“IDName”的表的表(因为并非数据库中的所有表都具有此列)。然后,我考虑浏览每个表以查看哪些表与IDName ='SAM'匹配-这就是我卡住的地方。我非常确定还有更快的方法来做到这一点,但我对数据库查询编码不太熟悉。任何帮助都会很有用,谢谢!
select * into tmp from
(
SELECT SO.NAME AS TableName, SC.NAME AS ColumnName
FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
WHERE sc.name = 'IDName' and SO.type = 'U'
) tablelist
如果我执行 Select * from tmp
,我会得到具有列“IDName”的表列表。现在,我必须逐个检查该列表中的每一个表,并查看它们是否具有“IDName ='Sam'”,如果是,则将其添加到输出表中。最终,我想看到数据库中具有“IDName ='Sam'”的所有表的名称。
sp_MSforeachtable
,该存储过程可以接受一个@whereand
参数,您可以通过该参数筛选出所需的表。 - Damien_The_Unbeliever