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



我正在使用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不同。

我需要它跨多个表工作,因此为每个表创建视图不会令人满意。

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

关注这篇文章一段时间,因为这个话题似乎很有趣,对我来说是一个学习机会:)不确定这是否可能,但您可以将动态查询执行视为替代方案,如下所示-

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+'')

希望这至少能给你一些希望之光。

最新更新