简体   繁体   English

在SELECT语句中指定列名作为参数?

[英]Specifying Column Name As A Parameter in SELECT statement?

I need to do something like this, but it always fails with 'Error converting data type varchar to int': 我需要执行以下操作,但始终会因“将数据类型varchar转换为int时出错”而失败:

DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)

SET @ColName='intcolumn'

SET @intParam = SELECT @ColName FROM myTable

How do I accomplish something like this? 我该如何完成这样的事情? I can see the problem is that the SELECT statement simply returns the column name as a string, but I am not sure how to fix that. 我可以看到问题是SELECT语句只是将列名作为字符串返回,但是我不确定如何解决。 I am using SQL Server 2008R2. 我正在使用SQL Server 2008R2。

You need to use dynamic sql: 您需要使用动态sql:

  • build your dynamic SQL query (take a look at @SQL variable in sample below) 建立动态SQL查询(在下面的示例中查看@SQL变量)
  • use output parameter to get value back from dynamic sql (take a look at @intParam and @intParam_out in sample below) 使用输出参数从动态sql中获取值(在下面的示例中查看@intParam和@intParam_out)
  • execute dynamic sql using sp_executesql 使用sp_executesql执行动态sql
DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)

SET @ColName='intcolumn'

DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT @intParam_out = ' + @ColName + ' FROM myTable'
exec sp_executesql @SQL, N'@intParam_out int OUTPUT', @intParam_out = @intParam OUTPUT

使用Cast

SET @intParam = SELECT cast(@ColName as int) FROM myTable

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM