Insert Into MessagingMessageReceipient
(
MessageId,
ReceipientId,
ReceipientType
)
SELECT
@pEMailId,
csv.Part, -- each @pReceiver
1
FROM
dbo.inline_split_me(',',@pReceivers) csv
ケース 1:
含まれる場合@pReceiver
-- 「a」のみ
上記のストアド プロシージャでは、2 つの行が挿入されます (1 つには「a」、もう 1 つには空白があります)。
ケース2。
while if @pReceiver
contains -- "a" のみ
ストアド プロシージャを超えると、ゼロ行が挿入されます
ケース3。
@pReceiver
「a、b」タイプの値が含まれている場合にのみ正常に機能します
すべてのタイプの入力で正常に動作させる方法
関数
CREATE FUNCTION inline_split_me (@SplitOn char(1),@String varchar(7998))
RETURNS TABLE AS
RETURN (WITH SplitSting AS
(SELECT
LEFT(@String,CHARINDEX(@SplitOn,@String)-1) AS Part
,RIGHT(@String,LEN(@String)-CHARINDEX(@SplitOn,@String)) AS Remainder
WHERE @String IS NOT NULL AND CHARINDEX(@SplitOn,@String)>0
UNION ALL
SELECT
LEFT(Remainder,CHARINDEX(@SplitOn,Remainder)-1)
,RIGHT(Remainder,LEN(Remainder)-CHARINDEX(@SplitOn,Remainder))
FROM SplitSting
WHERE Remainder IS NOT NULL AND CHARINDEX(@SplitOn,Remainder)>0
UNION ALL
SELECT
Remainder,null
FROM SplitSting
WHERE Remainder IS NOT NULL AND CHARINDEX(@SplitOn,Remainder)=0
)
SELECT Part FROM SplitSting
)
SQL Server 2012 を使用しています