如何使用 string/variable 插入 table 列

How to INSERT INTO table column with string/variable

这是我从 powershell 中提取的数据并将其插入#temptable:

Name                   : SULESRKMA
Location               : Leisure Services - Technology Services
Shared                 : False
ShareName              : 
JobCountSinceLastReset : 0
PrinterState           : 131072
Status                 : Degraded
Network                : False

我正在遍历数据并从标识符中删除了值。我想使用这些标识符将值插入到具有与标识符相同的列名的 table 中。因此,例如,我有一个名为 @identifier = "Name" 的变量和一个列名为 Name 的临时 table #printers。我想做类似的事情:

SELECT --select statement
INSERT INTO #printers(@identifier)

但这似乎并不奏效,不足为奇。有没有办法做到这一点? (@identifier 变量将在整个 while 循环过程中更改为数​​据中的其他标识符。)

欢迎任何甚至不涉及使用这种方法的替代建议。我的最终目标只是将这些数据作为一行放入 table.

(我目前正在使用 Microsoft SQL Server Management Studio,如果这很重要的话)

首先,在这种情况下您不太可能需要遍历任何内容。当您考虑 SQL.

时,请考虑基于集合的操作
INSERT INTO #temptable (Column1Name, Column2Name, Column3Name)
VALUES (@identifer, @anotherIdentifier, @someOtherIdentifier)
--optional clauses
WHERE Column1Name = 'some value' OR Column1Name = @someIdentifier

或者你可以SELECT INTO

SELECT
@identifier,
@anotherIdentifer,
@someOtherIdentifier
INTO #temptable

请务必在 SELECT INTO 中为您尝试添加数据的 table 中的每一列设置一个值。因此,例如,如果 #temptable 中有 4 列,而您只有 3 个值要插入(第 1、2 和 3 列),那么您需要 NULL 第 4 列或静态设置它.

SELECT
@identifier,
@anotherIdentifer,
@someOtherIdentifier,
NULL
INTO #temptable
--or
    SELECT
@identifier,
@anotherIdentifer,
@someOtherIdentifier,
'static value'
INTO #temptable

编辑

如果要使用变量指定要插入的列,则必须使用动态 sql。这是一个例子:

if object_id ('tempdb..#tempTable') is not null drop table #tempTable
create table #tempTable (Column1Name int, Column2Name int, Column3Name int)

declare @columnName varchar(64) = 'Column1Name'
declare @sql varchar(max)

set @sql = 
'insert into #tempTable (' + @columnName + ')
select 1'

exec(@sql)

select * from #tempTable