一尘不染

其他数据库产品中是否有等效于MS SQL'FOR XML PATH'的产品?

sql

我目前正在使用Microsoft的FOR XML PATH功能以XML格式从MS SQLServer中提取数据。我真的很喜欢该功能,但是对于使用供应商特定的功能总是感到不舒服。

其他主要数据库供应商有没有类似之处?

编辑

让我更详细地介绍我要寻找的功能类型

在MS SQL中,您可以使用此查询

SELECT so.id AS '@Id',
       so.Code AS '@Code',  
       cu.Code AS 'Customer/@Code',
       cu.Name AS 'Customer/@Name',
       (SELECT Item_Num AS '@Item',
                pa.Code AS '@PartCode'
        FROM tblSalesItem si
            LEFT JOIN tblPart pa ON pa.Id = si.Part_Id
        WHERE si.SalesOrder_ID = so.Id 
        FOR XML PATH('SalesItem') , type) 
FROM tblSalesOrder so
    JOIN tblCustomer cu ON so.customer_id = cu.ID
FOR XML PATH('SalesOrder'), ROOT('SalesOrders')

生成此XML

<SalesOrders>
  <SalesOrder Id="13" Code="C1002     ">
    <Customer Code="ROBERTS   " Name="Roberts Equipment  Inc." />
    <SalesItem Item="1" PartCode="FP-0001" />
    <SalesItem Item="2" PartCode="FP-0003" />
  </SalesOrder>
  <SalesOrder Id="15" Code="C1004     ">
    <Customer Code="EXBEL-LIFTS" Name="Exbel Lifts Inc." />
    <SalesItem Item="1" />
  </SalesOrder>
</SalesOrders>

我可以逐列控制元素和属性的使用。我可以创建元素的属性以将相关列分组在一起。我可以使用子查询来生成嵌套元素。您甚至可以使用返回XML的函数来生成任意深度的树。


阅读 151

收藏
2021-05-23

共1个答案

一尘不染

FOR XML PATH不在ANSI SQL-92标准中,因此将取决于各个供应商。我不知道在Oracle或MySQL中有任何等效功能。

2021-05-23