これを行う1つの方法は次のとおりです。私はあなたがこの形式@ userId = 1、@ ListOfSubjects = 'asp、c#'のような入力を持っていると仮定しています.. ここはサンプルのprocです。最初にコンマで区切った文字列を表に変換して挿入します。これを行うために、コンマ区切りの文字列が渡されたときにテーブルを返すサンプル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'
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
を次のようにUDFがある...と何をしようとしたのですか? – DaniDev
あなたの質問は何ですか、あなたの要件を教えてくれただけで、これを自分で実装している問題は何も述べていません。 –
あなたは何を試しましたか? – NicoRiff