這樣做的一種方法如下。我假設你有這樣的輸入格式@ userId = 1,@ListOfSubjects ='asp,c#'.. 這裏是示例過程。這個想法是首先將列表中的逗號分隔字符串轉換爲表格,然後插入它。爲此,我創建了一個樣本UDF,它在將逗號分隔的字符串傳遞給它時將重新調用表。
create proc SampleUser_Insert
@UserId int ,
@ListOfSubjects varchar(1000)
as
begin
--set @UserId=1
--set @ListOfSubjects ='asp,c#,mvc'
declare @sampleTable table (userId int, subjects varchar(100))
insert into @sampleTable (userId,subjects)
SELECT @userId, data FROM dbo.[SplitString](@ListOfSubjects, ',')
select * from @sampleTable
end
-- exec SampleUser_Insert 1,'a,b,c'
的UDF是如下
CREATE FUNCTION [dbo].[SplitString]
(
@String NVARCHAR(4000),
@Delimiter NCHAR(1)
)
RETURNS TABLE
AS
RETURN
(
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos)
FROM Split
)
GO
......什麼?你試試? – DaniDev
你的問題是什麼,你剛纔告訴我們你的要求,你沒有說明你自己實現這個問題。 –
你有什麼試過? – NicoRiff