如何在SQL显示中重命名列名而无需硬编码

如何在SQL显示中重命名列名而无需硬编码,sql,Sql,目前,如果我想将列名重命名为其他名称,我会这样做 Select column as "what I want to name it" from table1 但是,我不想硬编码列名,所以我尝试设置一个变量 set @var = "some name" select column as @var from table1 但这给了我语法错误,我做错了什么?谢谢大家的帮助 SQL处理器就是不能那样工作。变量求值发生在表达式中;它不能用于构建输出 如果必须的话,您可以使用动态SQL,但这就像用生

目前,如果我想将列名重命名为其他名称,我会这样做

Select column as "what I want to name it" 
from table1
但是,我不想硬编码列名,所以我尝试设置一个变量

set @var = "some name"
select column as @var 
from table1

但这给了我语法错误,我做错了什么?谢谢大家的帮助

SQL处理器就是不能那样工作。变量求值发生在表达式中;它不能用于构建输出

如果必须的话,您可以使用动态SQL,但这就像用生锈的链锯杀死一只苍蝇,锯片上没有防护装置。最好不要在SQL中这样做


正如@juergend在一篇评论中所说,动态SQL的形式取决于您使用的SQL引擎:Oracle、SQL Server、mySQL等。

这里介绍如何在SQL Server中使用动态SQL

DECLARE @columnName VARCHAR(10)
DECLARE @sql VARCHAR(100)

SET @columnName = 'Column1'

SET @sql = 'SELECT 1 AS ' + @columnName

EXEC (@sql)

为此,您需要动态SQL。如何做到这一点在很大程度上取决于您使用的数据库引擎。为什么不希望对列进行硬编码?