SQL:根据变量选择动态列名
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5637983/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQL: Select dynamic column name based on variable
提问by dotNetkow
I have a Microsoft SQL stored procedure whose column name I want to set via a variable that is passed into it:
我有一个 Microsoft SQL 存储过程,我想通过传递给它的变量设置其列名:
CREATE PROCEDURE [My_Procedure]
@myDynamicColumn varchar(50)
AS BEGIN
SELECT 'value' AS @myDynamicColumn
END
This does not work ("Incorrect syntax"). If I wrap the column name with [ ]:
这不起作用(“语法不正确”)。如果我用 [ ] 包裹列名:
SELECT 'value' AS [@myDynamicColumn]
The column name literally outputs as '@myDynamicColumn' instead of the actual value. Is there any way to do this? I've looked into dynamic SQL articles but nothing is quite what I'm asking for.
列名字面上输出为“@myDynamicColumn”而不是实际值。有没有办法做到这一点?我查看了动态 SQL 文章,但没有什么是我所要求的。
回答by Joe Stefanelli
EXEC ('SELECT ''value'' AS ' + @myDynamicColumn)
回答by Josh
You could build your query into a string and use exec
您可以将查询构建为字符串并使用 exec
CREATE PROCEDURE [My_Procedure]
@myDynamicColumn varchar(50)
AS BEGIN
EXEC('SELECT ''value'' AS ' + @myDynamicColumn)
END