如何将数组传递给SQL SERVER 2008
存储过程并将数组的所有值插入数据库表中。
例如:从ASP.NET mvc C#
,我将传递一个参数,该参数具有以逗号分隔的多个值
如下
string category = "Cat1, Cat2, Cat3, Cat4";
我想在名为Categories的表中插入上述字符串的所有值。
我如何使用SQL SERVER 2008
实现此目的。
答案 0 :(得分:0)
您可以通过将CSV
值转换为XML
格式然后使用CROSS APPLY
将其拆分为行并将其插入表格来轻松完成。
CREATE TABLE #Categories(VALUE VARCHAR(100))
DECLARE @STR VARCHAR(500)='Cat1, Cat2, Cat3, Cat4'
INSERT INTO #Categories(VALUE)
SELECT LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) 'VALUE'
FROM
(
-- To change ',' to any other delimeter, just change ',' before '</M><M>' to your desired one
SELECT CAST ('<M>' + REPLACE(@STR, ',', '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
SELECT * FROM #Categories