gpt4 book ai didi

sql-server - 如何分离变量和值,然后插入表中?

转载 作者:行者123 更新时间:2023-12-03 00:29:34 24 4
gpt4 key购买 nike

问题

存储过程正在接收变量和值的列表以及分隔符。该存储过程需要将它们插入表中。

--Example table
create table #tempo
(
Variable1 int,
Variable2 int,
Variable3 int
)

这些是存储过程的参数:

declare @variableList varchar(100)
declare @valueList varchar(100)
declare @separator char(1)

set @variableList = 'Variable1#Variable2#Variable3'
set @valueList = '1111#2222#3333'
set @separator = '#'

结果

我想要实现的是:

select * from #tempo

+---------+---------+---------+
|Variable1|Variable2|Variable3|
+---------+---------+---------+
|1111 |2222 |3333 |
+---------+---------+---------+

一种方法

我可以使用循环并构建动态 SQL,但我想避免它。除了不使用动态 SQL 的明显原因之外,循环结构难以维护、解释和测试也可能成为一个问题。

理想的方式

我正在考虑一种更优雅的方式来做到这一点,例如使用 string_splitcoalesce等等。但是无法找到不使用动态 SQL 或循环的方法。

最佳答案

如果您始终具有相同的一组列名称,那么使用数据透视表很容易,但如果列发生变化,那么您可以使用相同的脚本和动态调整的变量列表,作为参数提供或直接读取临时表:

INSERT INTO #tempo SELECT *
FROM (
SELECT [value], rv = 'Variable' + CAST(Row_Number() OVER ( ORDER BY (SELECT 1)) as VARCHAR)
FROM STRING_SPLIT(@valueList,@separator)
) AS src
PIVOT (MAX([value]) FOR rv IN (Variable1,Variable2,Variable3)) AS pvt;

关于sql-server - 如何分离变量和值,然后插入表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54482612/

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