使用CSV插入

时间:2013-05-03 21:37:46

标签: sql-server

我有一个包含两个字段名称和ID的表。 名称来自输入参数@Name,ID来自CSV @CSVID。 我有一个溢出函数返回临时表。

我的存储过程是

INSERT INTO dbo.MyTable
(
    Name, 
    ID
 )
 VALUES
(

    (SELECT @Name, id FROM dbo.Split(@CSVID))
)

我的分割功能

ALTER FUNCTION [dbo].[Split] (@InStr VARCHAR(MAX))
RETURNS @TempTab TABLE
   (id int not null)
AS
BEGIN
    ;-- Ensure input ends with comma
SET @InStr = REPLACE(@InStr + ',', ',,', ',')
DECLARE @SP INT
DECLARE @VALUE VARCHAR(1000)
WHILE PATINDEX('%,%', @INSTR ) <> 0 
BEGIN
   SELECT  @SP = PATINDEX('%,%',@INSTR)
   SELECT  @VALUE = LEFT(@INSTR , @SP - 1)
   SELECT  @INSTR = STUFF(@INSTR, 1, @SP, '')
   INSERT INTO @TempTab(id) VALUES (@VALUE)
END
RETURN
END

所以我想要的是

说     @Name ='John Doe'     @CSVID ='1,2'

然后我想要插入的结果是

 Name    ID
 John     1
 Jhon     2

我看到了很多例子,但它们都很复杂。我只是一个简单的解释,如果子查询

,插入是如何工作的
SELECT * FROM dbo.Split(@CSVID)

返回的值超过1个。

由于

1 个答案:

答案 0 :(得分:6)

INSERT INTO dbo.MyTable(Name, ID)
SELECT  @Name,
        id
FROM dbo.Split(@CSVID)