Может кто-нибудь объяснить, как FOR XML используется в SQL Server? Это единственный способ конкатенации строк по строкам без использования пользовательской функции? Я получил это от post, сделал то, что мне нужно, но я этого не понимаю.Как работать с XML в SQL Server
Человек, который разместил это, ничего не объяснил. После исчерпывающего поиска я не мог найти ничего понятного. И нет, MSDN не помог мне, учитывая мои ограниченные навыки SQL.
Вот мой SQL, только с теми именами, которые были изменены с той, что была в этом сообщении.
SELECT
ID,
STUFF((
SELECT ' -' + Code
FROM #Z
WHERE (ID = Results.ID)
FOR XML PATH(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)'),1,2,''
) AS ConcatCode
FROM #Z Results
GROUP BY ID
MSDN [документация] (https://msdn.microsoft.com/en-us/library/ms178107.aspx) представляется довольно ясной. Еще более понятно, как использовать режим «PATH» [здесь] (https://msdn.microsoft.com/en-us/library/ms189885.aspx). –
Это конкретное использование 'FOR XML XPATH' является одним из [хаков] (http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-sql-server) для выполнения GROUP_CONCAT или ListAgg на сервере Sql. – StuartLC
Ну, я не знаю об атрибутах, элементах или выражениях XPath. Это больше похоже на HTML-жаргон. – Dombey