2015-02-27 2 views
-3

Как передать массив в SQL SERVER 2008 хранимую процедуру и вставить все значения массива в таблицу базы данных.Как вставить значения столбца таблицы динамически

Для примера: Из ASP.NET mvc C#, я бы передать параметр, имеющий несколько значений, разделенных запятой

, как показано ниже

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

Я хотел бы вставить все значения выше строки в таблице называется Категории ,

Как я мог достичь этого, используя SQL SERVER 2008.

+3

Вопросов ищут отладки помощи ("** почему не этот код работает? **") должен включать в себя желаемое поведение, конкретную проблему или ошибки и кратчайший код, необходимый для его воспроизведения ** в самом вопросе **. Вопросы без ** ясной постановки проблемы ** не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). –

+2

http://stackoverflow.com/questions/14811316/separate-comma-separated-values-and-store-in-table-in-sql-server –

ответ

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 
  • Click here для просмотра результата
Смежные вопросы