У меня есть фрагмент xml, как в следующем примере, и я хотел бы получить список столбцов и превратить их в разделенный запятыми список, но я действительно изо всех сил пытаюсь выяснить синтаксис для работы с данными XMLТип и документация, которую я нашел, читаются как корейские инструкции по стерео: (
<ROOT>
<DATAVIEW>sp_Demo</DATAVIEW>
<WHERECLAUSE>X=4</WHERECLAUSE>
<COLUMNS>
<COLUMN>ImageHTML</COLUMN>
<COLUMN>Task_ID</COLUMN>
</COLUMNS>
</ROOT>
Может кто-нибудь указать мне на пример для начинающих или дать мне указание, как это сделать?
Отприведенный выше фрагмент XML я хотел бы вернуть строку, содержащую «ImageHTML, Task_ID»
Ну, это не красиво, но это помогает, спасибо за указатель Луи.
DECLARE MY_CURSOR Cursor
FOR
Select Substring(Substring(CAST(T.Item.query('.') AS varchar(50)),0,LEN(CAST(T.Item.query('.') AS varchar(50)))-8),9,LEN(CAST(T.Item.query('.') AS varchar(50))))
From @Data.nodes('ROOT/COLUMNS/COLUMN') AS T(Item)
Open MY_CURSOR
DECLARE @ColumnName varchar(50)
DECLARE @RunningTotal varchar(2000)
SET @RunningTotal=''
FETCH NEXT FROM MY_CURSOR INTO @ColumnName
WHILE (@@Fetch_STATUS<>-1)
BEGIN
IF (@@FETCH_STATUS<>-2)
IF LEN(@RunningTotal)>0 SET @RunningTotal=@RunningTotal+','
SET @RunningTotal=@RunningTotal+@ColumnName
FETCH NEXT FROM MY_CURSOR INTO @ColumnName
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
PRINT @RunningTotal
FinalОбновление: в то время как моя версия курсора работала, Akash представил намного более аккуратное решение ниже.