CSV值传递到SQL Server存储过程

时间:2012-02-26 06:36:46

标签: sql-server tsql

这是我的存储过程输入参数,我想拆分列名和列值来插入临时表,然后移动主表生成表。

临时表,如列名和值

实施例

Create Proc sample (@name VARCHAR(MAX))

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

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

我的问题:

  1. 如何以所需格式分割输入参数
  2. 如何查找列值
  3. 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

我想引导您阅读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上已有几个主题和其他示例。