sql-server - 为多个字段创建同义词(或类似)
问题描述
我正在使用 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
每次都不同。
我需要它来处理许多表,因此为每个表创建一个视图不会令人满意。
也许同义词不是正确的解决方案,但如果不是,那么我很高兴听到提供内联解决方案的其他方式。
解决方案
关注该帖子一段时间,因为该主题似乎很有趣,并且对我来说是一个学习机会:)不确定这是否可能,但是您可以考虑将动态查询执行作为替代方案,如下所示-
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+'')
希望这至少会给你一些希望之光。
推荐阅读
- c# - 如何从字符串中获取 TimeZone?
- sql - 使用 sql loader 将数据从 CSV 文件加载到 oracle 表
- javascript - 不带参数的条件语句
- react-native - 在本机反应中将索引传递给道具
- node.js - 在亚马逊网络服务器中部署反应、节点
- c# - 流适配器和后备存储流
- arduino - 为什么arduino和树莓派通过串口通讯这么慢
- c# - 如何在 Label[] 中搜索 item.Text?
- database-design - 在 Cassandra 表中存储未确定的数据
- javascript - 在 Javascript 中显示来自 S3 的图像