如何在SQL显示,而不硬编码命名的列名

问题描述:

目前,如果我要重命名的列名别的东西,我会做如何在SQL显示,而不硬编码命名的列名

Select column as "what I want to name it" 
from table1 

不过,我不想硬编码列名所以我试图设置一个变量

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

但这是给我的语法错误,我做错了什么?所有帮助表示感谢,谢谢。

+0

您需要动态SQL。如何做到这一点很大程度上取决于您使用的数据库引擎。 –

+0

为什么你不希望列被硬编码? – CathalMF

SQL处理器不会那样工作。变量评估发生在表达式中;它不能用于构造输出。

如果您真的需要,您可以使用动态SQL,但这就像使用生锈的电锯杀死苍蝇,而电锯没有防护。最好不要在SQL中这样做。

由于@juergend在注释中说,动态SQL的形式取决于你使用的SQL引擎:甲骨文,SQL服务器,MySQL等

这里如何使用动态SQL

SQL服务器
DECLARE @columnName VARCHAR(10) 
DECLARE @sql VARCHAR(100) 

SET @columnName = 'Column1' 

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

EXEC (@sql)