sql - 获取嵌套的 XML 输出 sql server

标签 sql sql-server xml

我的 sql server 数据库的 xml 输出有问题。我的 table :

CREATE TABLE [dbo].[test_table](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [firstname] [nvarchar](255) NULL,
    [lastname] [nvarchar](255) NULL,
    [city] [nvarchar](255) NULL,
    [street] [nvarchar](255) NULL,
    [streetno] [int] NULL
)

我想要输出,其中 Address 嵌套在每个 Person 中,如下所示:

<Root>
  <Person id="1">
    <firstname>Stefanie</firstname>
    <lastname>Buckley</lastname>
    <Address>
      <city>Oklahoma</city>
      <street> Cowley Road</street>
      <streetno>34</streetno>
    </Address>
  </Person>
  <Person id="2">
    <firstname>Sandy</firstname>
    <lastname>Mc Gee</lastname>
    <Address>
      <city>Montgomery</city>
      <street> Hague Parkway</street>
      <streetno>27</streetno>
    </Address>
  </Person>
</Root>

我试过像这样的嵌套选择:

 select tbl1.id '@id', tbl1.firstname, tbl1.lastname,
 (
 select city,street,streetno from test_table as tbl2
 where tbl2.id = tbl1.id
 for xml path('Address')
 ) 
 from test_table as tbl1
 for xml path('Person'), Root('Root')

但是输出是这样的:

<Root>
  <Person id="1">
    <firstname>Stefanie</firstname>
    <lastname>Buckley</lastname>&lt;Address&gt;&lt;city&gt;Oklahoma&lt;/city&gt;&lt;street&gt; Cowley Road&lt;/street&gt;&lt;streetno&gt;34&lt;/streetno&gt;&lt;/Address&gt;</Person>
  <Person id="2">
    <firstname>Sandy</firstname>
    <lastname>Mc Gee</lastname>&lt;Address&gt;&lt;city&gt;Anchorage&lt;/city&gt;&lt;street&gt; North Green Clarendon Road&lt;/street&gt;&lt;streetno&gt;29&lt;/streetno&gt;&lt;/Address&gt;</Person>
  <Person id="3">

我做错了什么?

最佳答案

您忘记了,键入,您不需要从表中额外读取。

select tbl1.id '@id'
    , tbl1.firstname
    , tbl1.lastname
    , (
        select city
            , street
            , streetno
        for xml path('Address'), type
    ) 
from test_table as tbl1
for xml path('Person'), type, Root('Root')

关于sql - 获取嵌套的 XML 输出 sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18785693/

相关文章:

sql - 如何在 SQL Server 中重置表的 IDENTITY 列?

android - 如何访问字符串数组列表 xml 以下结构

PHP 从 mysqli_fetch_row 数组中排序结果

Mysql搜索

sql - 创建表时计算的 bool 列

mysql - 使用 MSSM 将 MySQL 数据库传输到 SQL Express 2017

c# - 将 SQL 查询转换为 LINQ -- 运算符 '&&' 不能应用于类型 'int' 和 'bool' 的操作数

android - 将图像路径存储在 SQL 数据库中

java - 如何根据 JAXB 中元素的存在分配 boolean 值?

sql - 使用 LIKE 或类似的完整搜索操作搜索 XML