gpt4 book ai didi

SQL Server 2005 "FOR XML PATH"多个标签同名

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:16 25 4
gpt4 key购买 nike

我有一个像下面这样的 XML 结构

<root>
<person>
<name>James</name>
<description xsi:type="me:age">12</description>
<description xsi:type="me:height>6 foot</description>
...

我必须把它从 table 上拉出来,比如...

姓名、年龄、高度

我正在尝试使用 SQL 2005 中的 FOR XML 路径内容进行查询

SELECT
Name as 'name'
Age as 'description xsi:type="me:age"'
Height as 'description xsi:type="me:height"'
FOR XML PATH('person')

但它给了我一个关于缺少“描述 xsi”命名空间的错误。有什么方法可以使用 FOR XML PATH 来实现这一点。实际查询比这个例子要复杂得多,需要花费大量精力才能更改。

谢谢

最佳答案

FOR XML PATH 有时有点困难(至少据我所知)。这可能会让你到达那里:

WITH XMLNAMESPACES('uri' as xsi)    
SELECT
'me:age' AS 'description/@xsi:type'
,age AS 'description'
,name AS 'name'
,'me:height' AS 'description/@xsi:type'
,height AS 'description'
FROM #test
FOR XML PATH('person')

产生:

<person xmlns:xsi="uri">
<description xsi:type="me:age">32</description>
<name>Alice</name>
<description xsi:type="me:height">6 Foot</description>
</person>
<person xmlns:xsi="uri">
<description xsi:type="me:age">24</description>
<name>Bob</name>
<description xsi:type="me:height">5 Feet 5 Inches</description>
</person>

关于SQL Server 2005 "FOR XML PATH"多个标签同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673108/

25 4 0