【问题标题】:TSQL for xml path - How can I include a subquery container element even if the subquery is empty?TSQL for xml path - 即使子查询为空,如何包含子查询容器元素?
【发布时间】:2013-07-03 20:38:15
【问题描述】:

我构建 XML 的查询包括子查询。子记录应该进入容器元素。即使没有子记录,XML 也必须具有容器元素。

考虑以下问题。即使没有子记录或验证失败,<Patients> 容器元素也必须存在。

<Hospital>
    <Patients>
        <Patient></Patient>
        <Patient></Patient>
        <Patient></Patient>
    </Patients>
</Hospital>

我使用FOR XML PATH 尝试了几种不同的方法:

select
    (
        select
            PatientFields
        from
            PatientTable
        for xml path('Patient'), root('Patients'), elements xsinil, type
    )
for xml path('Hospital'), elements xsinil, type

上述方法将&lt;Patients&gt; 元素完全省略为一个空集。

下面的包含标签但添加了xsi:nil="true"属性,这也会导致验证失败。

select
    (
        select
            PatientFields
        from
            PatientTable
        for xml path('Patient'), elements xsinil, type
    ) Patients
for xml path('Hospital'), elements xsinil, type

有没有办法强制容器元素出现?

【问题讨论】:

    标签: sql-server tsql for-xml-path


    【解决方案1】:
    select
        (
            select
                'John Doe'
            where 1 = 0
            for xml path('Patient'), type
        )
    for xml path('Patients'), root('Hospital'), type
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      相关资源
      最近更新 更多