【问题标题】:Specifying Column Name As A Parameter in SELECT statement?在 SELECT 语句中指定列名作为参数?
【发布时间】:2011-11-18 00:52:32
【问题描述】:

我需要做这样的事情,但它总是失败并显示“将数据类型 varchar 转换为 int 时出错”:

DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)

SET @ColName='intcolumn'

SET @intParam = SELECT @ColName FROM myTable

我该如何完成这样的事情?我可以看到问题是 SELECT 语句只是将列名作为字符串返回,但我不知道如何解决这个问题。我正在使用 SQL Server 2008R2。

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    你需要使用动态sql:

    • 构建您的动态 SQL 查询(查看下面示例中的 @SQL 变量)
    • 使用输出参数从动态 sql 中取回值(查看下面示例中的 @intParam 和 @intParam_out)
    • 使用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
    

    【讨论】:

      【解决方案2】:

      使用Cast:

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

      【讨论】:

      • 你误解了这个问题。 'intcolumn' 是列的占位符名称。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      相关资源
      最近更新 更多