【问题标题】:SQL Server - Column Name as VariableSQL Server - 列名作为变量
【发布时间】:2015-02-09 13:01:31
【问题描述】:

我只是想知道这是否可能,我正在尝试更新/插入列但是我希望能够将列名选择到变量中并这样做:

DECLARE @Col
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable)

INSERT INTO someothertable
(ID, @Col) --This is the part I'm querying
SELECT 
ID, 
SomeData
FROM yetanothertable

【问题讨论】:

  • 使整个查询动态sql
  • 你不能那样做。你能做的就是按照@mmhasannn 所说的去做,让它全部变成动态的sql。
  • 这通常表明数据模型有问题 - 不应该有多个列包含相同“类型”的数据,这样尝试参数化哪一列是有意义的'正在使用(也不是包含相同类型数据的多个表)
  • 我知道数据模型很糟糕,但我对此无能为力:(

标签: sql tsql insert sql-server-2012


【解决方案1】:
DECLARE @Col as Varchar(100)
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable)

DECLARE @SQL AS VARCHAR(500)
SET @SQL = 'INSERT INTO someothertable'
SET @SQL = @SQL + '(ID,' + @Col + ')'
SET @SQL= @SQL + ' SELECT ID, SomeData FROM yetanothertable'

EXEC(@SQL)

【讨论】:

    【解决方案2】:

    你为什么要这样做?

    DECLARE @Col varchar(100), @SQL varchar(1000)
    SET @Col = (SELECT TOP 1 somecolumnname FROM mytable)
    
    set @SQL='
    INSERT INTO someothertable
    (ID, '+@Col+')
    SELECT 
    ID, 
    SomeData
    FROM yetanothertable'
    EXEC(@SQL)
    

    【讨论】:

    • 因为我得到了很多需要报告的糟糕数据,我认为这个数据库是由某种半机智的人设计的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多