Я думаю, вы получили пустую строку, потому что SUBSTRING
Я не уверен, почему вы используете SUBSTRING
чтобы получить результат, такой как «Value1, Value2, Value3 текст между моими значениями OtherValue1, OtherValue2, OtherValue3»
попробуйте это.
SELECT
-- ISNULL( here in case [values] is empty table
ISNULL(STUFF((
SELECT ', ' + [value]
-- should be ', ' + NULLIF(value,'') or ', ' + ISNULL(value,'') depends on what you need
-- there is no column name for ', ' + [value], so AS [text()] is not need here
FROM [values]
FOR XML PATH(''),TYPE
).value('text()[1]','nvarchar(max)'), 1, 2, ''), '') +
-- you can replace PATH(''),TYPE).value('text()[1]','nvarchar(max)')
-- with PATH('')) it will be faster but if the values contain & > < etc. chars,
-- they will result in & > <
' text in between my values ' +
ISNULL(STUFF((
SELECT ', ' + [otherValue]
FROM [otherValues] WHERE [otherValues]<>''
FOR XML PATH(''),TYPE
).value('text()[1]','nvarchar(max)'), 1, 2, ''), '')