【发布时间】:2017-06-03 07:22:46
【问题描述】:
我一直在使用这里找到的 SQL: Find all tables containing column with specified name
取得巨大成功。它允许我找到包含特定列的所有表。我的问题是我正在处理的数据库似乎有很多空表(也许我的结果大约有一半是空的)。我想知道是否有办法修改链接中的代码,以便不显示空行/列。以下是链接中的代码:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%MyName%'
ORDER BY TableName
,ColumnName;
谢谢你,
【问题讨论】:
-
您可以使用动态 SQL 来完成。这是一个选择吗?
-
说实话,我不完全确定那是什么。我快速浏览了谷歌和这里的帖子:stackoverflow.com/questions/4165020/what-is-dynamic-sql 说动态 SQL 会损害性能或者它并不总是必要的......我愿意尝试,但常规 SQL 可能会更好?
-
@JohnnyBaggadoughnuts 动态 sql 对于这种事情其实很不错。虽然我会使用 sys.partitions 来接受 Dan 的回答。
-
性能是否值得关注?这似乎不应该一直运行 - 更像是一项维护任务?
-
我认为性能不是什么大问题。我只在寻找东西时才运行它。这更像是维护,是的。
标签: sql sql-server