Insert Into MessagingMessageReceipient
(
MessageId,
ReceipientId,
ReceipientType
)
SELECT
@pEMailId,
csv.Part, -- each @pReceiver
1
FROM
dbo.inline_split_me(',',@pReceivers) csv
情况1:
如果@pReceiver
包含 -- “a”,仅
然后上面的存储过程导致插入两行(一个带有'a',另一个带有空白)
案例2。
while if@pReceiver
包含 -- 仅 "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