Значение CSV, переданное в хранимую процедуру SQL Server - PullRequest
0 голосов
/ 26 февраля 2012

Это мой входной параметр хранимой процедуры, я хочу разделить имя столбца и значение столбца, чтобы вставить временную таблицу, а затем переместить рабочую таблицу основной таблицы.

Временная таблица, например имя столбца и значение

Пример

Create Proc sample (@name VARCHAR(MAX))

@NAME='column1=value1,column2=value2,column3=value3'

Create Table #temp(columnname varchar(max),value varchar(max))

Мой вопрос:

  1. Как разделить входной параметр в нужном формате
  2. Как найти столбец Значение

Буду признателен за любую помощь

1 Ответ

3 голосов
/ 26 февраля 2012

Я хотел бы направить вас к этой подробной статье, написанной Erland Sommarskog некоторое время назад, http://www.sommarskog.se/arrays-in-sql-2008.html.

Ресурсы для функций разделения можно найти здесь, http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648.

любимая функция разделения:

CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
    WITH Pieces(pn, start, stop) AS (
        SELECT 1, 1, CHARINDEX(@sep, @s)
        UNION ALL
        SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
        FROM Pieces
        WHERE stop > 0
    )
    SELECT 
        pn,
        SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM Pieces
)

Я считаю, что в StackOverflow уже есть несколько тем с другими примерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...