![](/img/trans.png)
[英]How to create SQL procedure to select dynamic column from dynamic table where dynamic table
[英]How to select dynamic column value from a table?
我有一個名為“ TableA”的表,該表具有以下記錄:
表A:
ID Jan Feb
---- ----- -------
1 '01/12' '04/12'
在這里,我想從表中選擇任一列值。 但是列名稱已分配給變量。 我們不知道確切的列名。
例如:
Declare @Month VARCHAR(20)
SET @Month = 'Feb'
Select @Month from TableA
它給出的輸出如下:
'Feb'
但是所需的輸出是'04 / 12'
如何獲得所需的輸出?
嘗試這個:
Declare @Month VARCHAR(20)
SET @Month = QUOTENAME('Feb')
exec('Select '+@Month+' from TableA')
使用UNPIVOT
select months
from TableA
unpivot
(months for m in (Jan, Feb)) pvt
where m=@month
它比動態SQL安全得多,因為它不容易受到SQL注入攻擊的攻擊
使用EXEC或sp_executesql
執行:
Declare @Month NVARCHAR(20)
SET @Month = 'Feb'
DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'Select ' + @Month + ' from TableA'
EXEC(@SQL)
最好使用sp_executesql,因為它將參數化變量:
DECLARE @SQL NVARCHAR(4000) SET @SQL = 'Select @Month from TableA' EXEC sp_executesql @SQL, N'@Month NVARCHAR(20)', @Month = 'Feb'
(這只是返回常量'Feb'-列名不能是變量)
嘗試這個
Declare @colName VARCHAR(20)
SET @colName = 'Feb'
Exec('select '+ @colName+' from TableA')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.