मुझे लगता है कि आपका मूल प्रयास लगभग आ गया है। मैं एक्सएमएल दृष्टिकोण के लिए हर समय इस तरह की चीज करता हूं। नीचे दिया गया समाधान आपके सटीक उदाहरण को हल करता है और इसे अन्य उद्देश्यों के लिए आसानी से अनुकूलित किया जा सकता है:
DECLARE @delimiter NVARCHAR(10)
SET @delimiter = ', '
declare @values TABLE (
[value] NVARCHAR(25)
)
declare @otherValues TABLE (
[otherValue] NVARCHAR(25)
)
INSERT INTO @values VALUES ('Value1')
INSERT INTO @values VALUES ('Value2')
INSERT INTO @values VALUES ('Value3')
INSERT INTO @otherValues VALUES ('OtherValue1')
INSERT INTO @otherValues VALUES ('OtherValue2')
INSERT INTO @otherValues VALUES ('OtherValue3')
SELECT
STUFF(
(
SELECT
@delimiter + CAST([value] AS NVARCHAR(500)) + '' AS [text()]
FROM
@values
FOR
XML PATH('')
),
1,
LEN(REVERSE(@delimiter)), -- Reverse the delimiter string in case it has trailing spaces; LEN() won't count those
''
) +
' text in between my values ' +
STUFF(
(
SELECT
@delimiter + CAST([otherValue] AS NVARCHAR(500)) + '' AS [text()]
FROM
@otherValues
FOR
XML PATH('')
),
1,
LEN(REVERSE(@delimiter)), -- Reverse the delimiter string in case it has trailing spaces; LEN() won't count those
''
)