0

我们将 4 个参数传递给存储过程

@PageID,
@CompanyID,
@URL, 
@URLCode,

所有这些参数都包含逗号分隔的值

例子:

 @PageID contains ("1,2,3,4,5,6,7")
 @CompanyID contains ("10,20,30,40,50,60,70") 
 @URL contains ("u1,u2,u3,u4,u5,u6,u7")
 @URLCode contains ("c1,c2,c3,c4,c5,c6,c7") 

在数据库中,我有一张表,如下所述:

表名:UrlMapping

列:

MappingID (PK), 
PageID, 
CompanyID,
URL,
UrlCode

你能建议如何在UrlMapping表中插入这些多个逗号分隔值吗?

4

1 回答 1

2

这是一个两步的过程。

将字符串拆分为一组临时表: T-SQL:与字符串连接相反 - 如何将字符串拆分为多条记录

根据行编号将表重新连接在一起并插入数据库:

INSERT INTO UrlMapping 
(PageID, CompanyID)
FROM
SELECT PageID, CompanyID
(
    SELECT id AS PageID, ROW_NUMBER() OVER (ORDER BY id) as PageRowNum
    FROM
    @SplitPageID
) AS SplitPageID
INNER JOIN  
(
    select id AS CompanyID, ROW_NUMBER() OVER (ORDER BY id) as CompanyRowNum
    FROM
    @SplitCompanyID
) AS SplitCompanyID
ON
SplitPageID.PageRowNum = SplitCompanyID.CompanyRowNum

这是一个有代表性的查询,您需要实现拆分,插入到拆分临时表中,并扩展连接以覆盖所有列。

于 2013-03-23T09:48:34.897 回答