【问题标题】:Mapping dynamic column names in sql server在 sql server 中映射动态列名
【发布时间】:2017-03-06 11:30:00
【问题描述】:
DECLARE @step VARCHAR(25) = '15';
DECLARE @COL VARCHAR(50) = step_col_@step;
UPDATE table_tblName SET @COL=<some value> WHERE <condition>

我有上述查询,其中@COL 应该是动态的,即 step_col_1、step_col_2、step_col_3......step_col_18。如果没有 sql server 中的 If-else 条件,如何实现这一点?

【问题讨论】:

  • 声明@COL VARCHAR(50) = 'step_col_'+@step

标签: sql sql-server dynamic-columns


【解决方案1】:

试试下面的查询,

DECLARE @COL VARCHAR(50) = 'step_col_'+@step

【讨论】:

    【解决方案2】:

    像这样传递变量以形成动态 sql 查询

    DECLARE @step VARCHAR(25) = '15';
    DECLARE @COL VARCHAR(50) = 'step_col_'+@step
    exec ('UPDATE table_tblName SET '+@COL+'=<some value> WHERE <condition>')
    

    【讨论】:

      【解决方案3】:
       DECLARE @step VARCHAR(25) = '15';
       DECLARE @COL VARCHAR(50) = 'step_col_'+@step;
       DECLARE @String VARCHAR(500) = ''
       SET @String = 'UPDATE table_tblName SET '''+@COL+''' = <some value> WHERE  
       <condition>' 
       EXEC (@String)
      

      【讨论】:

      • 考虑添加一个简短说明,说明上述内容如何/为什么有助于解决问题,以帮助他人。来自Review
      【解决方案4】:
      DECLARE @step VARCHAR(25) = '15';
      DECLARE @COL VARCHAR(50) 
      SET @COL = 'step_col'+@step;
      
      UPDATE table_tblName SET @COL=<some value> WHERE <condition>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-07
        • 2022-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 2013-07-22
        相关资源
        最近更新 更多