【发布时间】:2011-11-15 23:42:58
【问题描述】:
我有一个类似于以下示例的 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
最终更新:虽然我的光标版本有效,但 Akash 在下面提出了一个更简洁的解决方案。
【问题讨论】:
标签: xml sql-server-2005 tsql