gpt4 book ai didi

sql-server - 如何使用字符串/变量插入表列

转载 作者:搜寻专家 更新时间:2023-10-30 23:37:28 25 4
gpt4 key购买 nike

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

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

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

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

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

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

(如果需要的话,我目前正在使用 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 中为要向其添加数据的表中的每一列都提供一个值,这一点很重要。因此,例如,如果 #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

关于sql-server - 如何使用字符串/变量插入表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com