我正在使用SQL Server 2012 Express。我想创建一个同义词(或类似的内联解决方案)以替代许多表中的多个标准列名称。
例如,数据库中几乎每个表都有3个相同的列:ID
,DateAdded
和TenantID
。我希望有一种方法可以选择它们,而不必每次都将它们全部列出。
我尝试了以下一些简单的代码来尝试实现此目的,但是语法在“创建同义词”部分中不正确。我已经用谷歌搜索,但找不到任何能给我带来内在解决方案的东西。
例如,而不是:
SELECT [ID], [DateAdded], [TenantID]
FROM TableName
相反,我希望使用此代码创建同义词:
CREATE SYNONYM [dbo].[Fields] FOR [ID], [DateAdded], [TenantID]
然后我可以重复编写查询:
SELECT dbo.[Fields] FROM TableName
并使TableName
每次都不同。
我需要在多个表中使用它,因此不能为每个表创建视图。
也许同义词不是正确的解决方案,但如果不是,那么我很乐意听到提供内联解决方案的其他方式。
答案 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+'')
希望这至少会给您带来希望的希望。