[英]How to use SQL to select XML columns with a root node?
我試圖從一個“根”節點包圍的SQL數據庫中檢索一些XML列,但發現很難找到正確的語法。
基本上,我在XML列中有詳細信息,並且我想返回一個XML結果,該結果將所有列分組為父節點的子節點。
所以...鑒於此:
declare @changes table (order_no varchar(10), details xml)
insert into @changes values ('123', null)
insert into @changes values ('456', null)
update @changes set details = '<ORDER><ORDER_ID>' + order_no + '</ORDER_ID></ORDER>'
...我想生成這樣的XML ...
<ORDERS>
<ORDER>
<ORDER_ID>123</ORDER_ID>
</ORDER>
<ORDER>
<ORDER_ID>456</ORDER_ID>
</ORDER>
</ORDERS>
為了使根節點成為“ ORDERS”,我認為這將是“ root”子句的一種變體,但是我似乎無法擺脫每個“記錄”周圍的“詳細信息”父節點。 即。
select details
from @changes
for xml path(''), root('ORDERS')
謝謝。
編輯:
我已經按照以下方式完成了我需要做的事情,但這是最好的方法嗎?
select details.query('/ORDER')
from @changes
for xml path(''), root('ORDERS')
您不需要XML列。
DECLARE @changes TABLE (order_no VARCHAR(10))
INSERT INTO @changes VALUES ('123')
INSERT INTO @changes VALUES ('456')
SELECT order_no AS ORDER_ID
FROM @changes
FOR XML PATH('ORDER'), ROOT('ORDERS')
結果:
<ORDERS>
<ORDER>
<ORDER_ID>123</ORDER_ID>
</ORDER>
<ORDER>
<ORDER_ID>456</ORDER_ID>
</ORDER>
</ORDERS>
您是否考慮過不在該列中添加ORDER
標簽?
DECLARE @changes TABLE (order_no VARCHAR(10), details XML)
INSERT INTO @changes VALUES ('123', NULL)
INSERT INTO @changes VALUES ('456', NULL)
UPDATE @changes
SET details = '<ORDER_ID>' + order_no + '</ORDER_ID>'
SELECT details AS ORDER
FROM @changes
FOR XML PATH(''), ROOT('ORDERS')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.