有没有什么方法可以搜索具有特定值的列我试图通过数据库中的所有表来查找? 例如我有在某些数据库的表中搜索具有特定值的列名称
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 '%VersionID%'
ORDER BY schema_name, table_name;
我从搜索中找到。它为我提供了“versionID”列存在的表名,但是如何搜索以返回表名,例如该列的值为“35”。
由于提前,
我道歉,也许我不是在我的要求明确。也许这不能在SQL中完成,因为我没有通过我的研究发现任何东西。但让我澄清一下。
运行此脚本
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 '%factor%'
--and table_name in (Select name from sysobjects where ratingVersionID = 35)
ORDER BY schema_name, table_name;
将返回此例如:
但让说,在“AutoAge_Factor”表中的“因素”一栏,如果没有匹配到“35”的任何记录。我怎样才能消除该表返回结果。但我真的更喜欢这种方式的结果格式,因为我想将此返回值用作循环,并在循环中执行其他一些操作。再次
谢谢!
podiluska:你的SQL的伟大工程!你知道结果是否可以用我提供的SQL相同的方式进行格式化?它只是列出tablesNames ...基本上,我打算循环这些表(具有该值的“versionID”的表),并最终插入一些东西。再次感谢! – 2012-07-24 19:29:08
当然 - 只需编辑字符串以取出你不想要的字段... – podiluska 2012-07-24 19:34:17
这会输出新的查询,我知道运行这些查询的唯一方法是使用游标,是否可以在一个查询中进行查询游标,以防我只想获得列x = y的所有表名称? – BornToCode 2013-11-13 08:55:33