如何动态插入表的列的值

时间:2015-02-27 17:53:09

标签: .net sql-server model-view-controller

如何将数组传递给SQL SERVER 2008存储过程并将数组的所有值插入数据库表中。

例如:从ASP.NET mvc C#,我将传递一个参数,该参数具有以逗号分隔的多个值

如下

string category = "Cat1, Cat2, Cat3, Cat4";

我想在名为Categories的表中插入上述字符串的所有值。

我如何使用SQL SERVER 2008实现此目的。

1 个答案:

答案 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