[英]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.