我有一个C#函数,可以将数据保存到SQL Server数据库。我在一个字符串中连接字符串,如:“name1,name2,name3,name4”,我想一次将它们发送到数据库,而不是循环遍历它们并逐个保存。
因此,在SQL服务器中它看起来像
Declare @names varchar
Set @names='name1,name2,name3,name4'
如何拆分此数组字符串并循环遍历它以将每个名称插入到不同的记录中?
我正在使用SQL Server 2012。
答案 0 :(得分:1)
你可以创建一个类似下面的函数,并像这样调用它:
INSERT INTO TableName (val)
Select val
FROM dbo.splitDelimitedInotTable('name1,name2,name3,name4', ',')
CREATE FUNCTION [dbo].[splitDelimitedInotTable](
@delimited NVARCHAR(MAX),
@delimiter NVARCHAR(100)
) RETURNS @t TABLE (id INT IDENTITY(1,1), val NVARCHAR(MAX))
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(@delimited,@delimiter,'</t><t>') + '</t>'
INSERT INTO @t(val)
SELECT r.value('.','varchar(MAX)') as item
FROM @xml.nodes('/t') as records(r)
RETURN
END