如何在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引擎:甲骨文,SQL服务器,MySQL等
答
这里如何使用动态SQL
SQL服务器DECLARE @columnName VARCHAR(10)
DECLARE @sql VARCHAR(100)
SET @columnName = 'Column1'
SET @sql = 'SELECT 1 AS ' + @columnName
EXEC (@sql)
您需要动态SQL。如何做到这一点很大程度上取决于您使用的数据库引擎。 –
为什么你不希望列被硬编码? – CathalMF