我只是想知道这是否可能,我试图更新/插入到列但我想能够选择列名到变量中,并像这样:SQL Server - 列名作为变量
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 Server - 列名作为变量
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
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)
你为什么要这么做?
DECLARE @Col varchar(100), @SQL varchar(1000)
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable)
set @SQL='
INSERT INTO someothertable
(ID, '[email protected]+')
SELECT
ID,
SomeData
FROM yetanothertable'
EXEC(@SQL)
因为我收到很多很多可怕的数据,我需要报告,我认为这个数据库是由某种机智设计。 – 2015-02-09 13:12:25
使整个查询动态sql – 2015-02-09 13:04:04
你不能那样做。你可以做什么@mmhasannn说,使所有动态SQL。 – 2015-02-09 13:04:49
这通常表示数据模型有问题 - 不应该有多个包含相同“数据类型”的列,因此尝试参数化您正在使用的列是有意义的(也不会有多个表包含相同类型的数据) – 2015-02-09 13:07:57