2016-06-07 30 views
1

目前,如果我要重命名的列名別的東西,我會做如何在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

回答

1

SQL處理器不會那樣工作。變量評估發生在表達式中;它不能用於構造輸出。

如果您真的需要,您可以使用動態SQL,但這就像使用生鏽的電鋸殺死蒼蠅,而電鋸沒有防護。最好不要在SQL中這樣做。

由於@juergend在註釋中說,動態SQL的形式取決於你使用的SQL引擎:甲骨文,SQL服務器,MySQL等

0

這裏如何使用動態SQL

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

SET @columnName = 'Column1' 

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

EXEC (@sql)