如何在SQL Server 2005中插入值数组?
-
03-07-2019 - |
题
如何将SQL代码写入INSERT(或更新)一个值数组(可能是一个伴随的字段数组,或者带有两者的矩阵),而不需要简单的迭代?
解决方案
我将列表构造为xml字符串并将其传递给存储过程。在SQL 2005中,它增强了xml功能以解析xml并进行批量插入。
查看这篇文章: 使用XML参数将列表传递给SQL Server 2005
其他提示
将值连接到列表并将其传递给sp。
的简单方法在sp中使用dbo.Split udf转换回结果集(表)。
创建此功能:
CREATE FUNCTION dbo.Split(@String nvarchar(4000), @Delimiter char(1))
returns @Results TABLE (Items nvarchar(4000))
as
begin
declare @index int
declare @slice nvarchar(4000)
select @index = 1
if @String is null return
while @index != 0
begin
select @index = charindex(@Delimiter,@String)
if @index !=0
select @slice = left(@String,@index - 1)
else
select @slice = @String
insert into @Results(Items) values(@slice)
select @String = right(@String,len(@String) - @index)
if len(@String) = 0 break
end return
end
然后尝试:
select * from dbo.split('a,b,c,d,e,f,g,h,i,j,k,l', ',')
如果您的数据已经存在于数据库中,则可以使用 INSERT SELECT
语法。它与INSERT VALUES略有不同......
INSERT recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'
不隶属于 StackOverflow