【发布时间】:2020-08-06 02:26:44
【问题描述】:
是否可以使用系统查询来检索 TABLE 名称,然后检索 SELECT * FROM that TABLE name。大致如下:
SELECT * FROM CAST (( SELECT TOP 1 t.Name
FROM sys.tables t
JOIN sys.columns c ON c.OBJECT_ID = t.OBJECT_ID
WHERE c.NAME = 'SomeColumnID' ) AS sys.tables )
当前的问题是SELECT TOP 1 t.Name 将返回一个字符串,然后可以将其转换为有效的Tables.Name。
【问题讨论】:
-
所以您想指定列名,然后从所有具有该列名的表中选择所有记录?
-
您正在寻找动态 SQL,这是一个 introduction,网上有很多教程,包括与您尝试做的类似的示例。
-
@DaleK 这可能是这个sn-p代码的一个用例,我把它写成TOP 1,但一切都会更好。我目前正在阅读链接,谢谢
-
@FarisKapo 提示:将对象名称组装成动态 SQL 语句时的最佳做法是使用
QuoteName()以避免出现奇怪名称的问题,例如New Table带有空格或保留字,例如From。请阅读SQL Injection。
标签: sql sql-server tsql select dynamic-sql