2017-05-17 56 views
3

這是我的代碼:如何選擇一列用字符串

declare @MaxPointNumber INT=499, @pointNumber INT = 5; 
select ('point'+CAST(@pointNumber as varchar)) 
from #TempHold 

這是結果: enter image description here

point5應該是列名,但不知何故,它成爲一個新的價值在桌子裏。 任何人都可以幫我理解發生了什麼事嗎?

+1

「point5應該是列名」。我只是不知道爲什麼你認爲這是真的。 –

+0

我的意思是,point5是#TempHold表的一個列名 – SwordW

+2

那麼你不能這樣做。你需要一個動態查詢https://www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-a-Stored-Procedure –

回答

2

如前所述,你需要動態SQL

DECLARE @sql VARCHAR(200) 
DECLARE @MaxPointNumber INT=499, @pointNumber INT = 5; 
SET @sql = 'SELECT ' + ('point'+CAST(@pointNumber as varchar)) + 
' from #TempHold' 


EXEC (@sql) 
0

您正在從Temphold中選擇。這是作爲你的列名。您正在檢索的表格。

0

想通了:

set @xxx=CAST(@pointNumber as varchar); 
exec('select point'+ @xxx +' from #TempHold')