Rog*_*son 1 xml t-sql sql-server xquery
有没有办法在Sql Server查询的select子句中从XML列转换/投影XML?
假设我们有一个表ID:Guid,Data:XML.
并且假设我们在"数据"列中有以下数据:
<Order>
<Details>
<Detail>
<Quantity>10</Quantity>
<ItemPrice>20</Quantity>
</Detail>
<Detail>
<Quantity>10</Quantity>
<ItemPrice>20</Quantity>
</Detail>
</Details>
</Order>
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以将此项目(使用select + xquery)投射到例如:
<Order>
<Details>
<Detail>
<LineTotal>200</LineTotal>
</Detail>
<Detail>
<LineTotal>200</LineTotal>
</Detail>
</Details>
</Order>
Run Code Online (Sandbox Code Playgroud)
我对如何在我的应用程序的内存中完成这项工作不感兴趣,我想在sql查询的select子句中进行服务器端转换.
生成您想要的输出,但SQL Server XML非常有限.在这个例子中,你真的需要知道如何(重新)生成整个树 - 使用"手动编码"变体.
declare @tbl table (id uniqueidentifier, data xml)
insert @tbl select newid(), '
<Order>
<Details>
<Detail>
<Quantity>10</Quantity>
<ItemPrice>20</ItemPrice>
</Detail>
<Detail>
<Quantity>10</Quantity>
<ItemPrice>20</ItemPrice>
</Detail>
</Details>
</Order>'
select ((
select d.d.value('(Quantity)[1]','int') * d.d.value('(ItemPrice)[1]','int') [LineTotal]
from ds.ds.nodes('Detail') d(d)
for xml path('Detail'), type)) Details
from @tbl t
cross apply data.nodes('Order/Details') ds(ds)
for xml path('Order')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |