这个问题引起了我的兴趣,我确实找到了一种方法。它可以实现,但是如果您只想在一个查询中一次性提供很多别名,我不推荐它。
首先我创建了一个存储过程,它提取所有列名并给它们一个不带“_”的别名。
USE [DataBase]
GO
IF OBJECT_ID('usp_AlterColumnDisplayName', 'P') IS NOT NULL
DROP PROCEDURE usp_AlterColumnDisplayName
GO
CREATE PROCEDURE usp_AlterColumnDisplayName
@TableName VARCHAR(50)
,
@ret nvarchar(MAX) OUTPUT
AS
Select @ret = @ret + [Column name]
From
(
SELECT ([name] + ' AS ' + '[' + REPLACE([name], '_', ' ') + '], ') [Column name]
FROM syscolumns
WHERE id =
(Select id
From sysobjects
Where type = 'U'
And [name] = @TableName
)
) T
GO
然后提取该字符串并将其放入具有查询结构的另一个字符串中。
执行,你就完成了。
DECLARE @out NVARCHAR(MAX), @DesiredTable VARCHAR(50), @Query NVARCHAR(MAX)
SET @out = ''
SET @DesiredTable = 'YourTable'
EXEC usp_AlterColumnDisplayName
@TableName = @DesiredTable,
@ret = @out OUTPUT
SET @out = LEFT(@out, LEN(@out)-1) --Removing trailing ', '
SET @Query = 'Select ' + @out + ' From ' + @DesiredTable + ' WHERE whatever'
EXEC sp_executesql @Query
如果您只是想一次提供很多别名,而不是坐下来为 80 多列输入,我宁愿建议使用一个简单的 SELECT 语句来执行此操作,例如 sp 或 Excel 中的语句和然后复制粘贴到你的代码中。