the*_*van 1 sql select sql-server-2005 sql-server-2008
我有一个名为"TableA"的表,它有以下记录:
表A:
ID Jan Feb
---- ----- -------
1 '01/12' '04/12'
Run Code Online (Sandbox Code Playgroud)
在这里,我想从表中选择任何一个列值.但是列名称被分配给变量.我们不知道确切的列名.
例如:
Declare @Month VARCHAR(20)
SET @Month = 'Feb'
Select @Month from TableA
Run Code Online (Sandbox Code Playgroud)
它给出了如下输出:
'Feb'
Run Code Online (Sandbox Code Playgroud)
但期望的输出是'04/12'
如何获得所需的输出?
试试这个:
Declare @Month VARCHAR(20)
SET @Month = QUOTENAME('Feb')
exec('Select '+@Month+' from TableA')
Run Code Online (Sandbox Code Playgroud)
使用UNPIVOT
select months
from TableA
unpivot
(months for m in (Jan, Feb)) pvt
where m=@month
Run Code Online (Sandbox Code Playgroud)
它是比动态 SQL 更安全的解决方案,因为它不易受到 SQL 注入攻击
归档时间: |
|
查看次数: |
11209 次 |
最近记录: |