为多个字段创建同义词(或类似名称)

时间:2019-07-18 01:25:26

标签: sql-server synonym

我正在使用SQL Server 2012 Express。我想创建一个同义词(或类似的内联解决方案)以替代许多表中的多个标准列名称。

例如,数据库中几乎每个表都有3个相同的列:IDDateAddedTenantID。我希望有一种方法可以选择它们,而不必每次都将它们全部列出。

我尝试了以下一些简单的代码来尝试实现此目的,但是语法在“创建同义词”部分中不正确。我已经用谷歌搜索,但找不到任何能给我带来内在解决方案的东西。

例如,而不是:

SELECT [ID], [DateAdded], [TenantID] 
FROM TableName

相反,我希望使用此代码创建同义词:

CREATE SYNONYM [dbo].[Fields] FOR [ID], [DateAdded], [TenantID]

然后我可以重复编写查询:

SELECT dbo.[Fields] FROM TableName

并使TableName每次都不同。

我需要在多个表中使用它,因此不能为每个表创建视图。

也许同义词不是正确的解决方案,但如果不是,那么我很乐意听到提供内联解决方案的其他方式。

1 个答案:

答案 0 :(得分:0)

由于该主题似乎很有趣,并且对我来说是学习的机会,所以在其后关注了一段时间:)不确定是否可行,但是您可以考虑将动态查询执行作为替代方案,如下所示-

DECLARE @C_Names VARCHAR(MAX)
DECLARE @T_Name VARCHER(MAX)

SET @C_Names = '[ID], [DateAdded], [TenantID]'
SET @T_Name = 'your_table_name'
--AS column names are fixed, you can now change the table name
--only and execute the script to get your desired output

EXEC('SELECT '+@C_Names+' FROM '+@T_Name+'')

希望这至少会给您带来希望的希望。