Sql Server FOR XML 字段和属性

问题描述

我需要从查询中获取 XML:

SELECT
... join ...
FOR XML PATH ('parent-lines'),ROOT('main-tag'),ELEMENTS XSINIL;

我已经能够得到这个结构:

<main-tag>
  <parent-lines>
    ...
    <child-name>EXAMPLE</child-name>     //case when the child is popolated
    <child-name xsi:nil=true />          //case when the child is empty
    ...
  </parent-lines>
  ...many parent-lines
</main-tag>

现在我有两个问题:

  • 第一个是让子名称没有 xsi: nil 属性,以防它们为空:
<child-name />
  • 第二个是我有某种“标题”,静态的,它适用于任何父标签,我想将其插入到我的 XML 的结构中,并获得与此类似的结构:
<main-tag>
  <header>
     ...
     <child-name>A sort of explain of the field</child-name>
     ...
  </header>                  //single header
  <parent-lines>...</parent-lines>      //many parent-lines
  ...
</main-tag>

你能帮我吗?

解决方法

我解决了问题,首先感谢@Larnu 和他的评论,第二次使用这种技术:

SELECT 
 (SELECT 'Cip' AS 'Cip' FOR XML PATH (''),TYPE) AS Header,(SELECT 'Ciop' AS 'Ciop' FOR XML PATH ('Parent-lines'),TYPE)
FOR XML PATH (''),ROOT('main-tag');

在第一个嵌套的“Select”中,在 PATH 中我没有输入任何内容,但在外面我用我想要获得“AS Header”的名称对其进行了洗礼。 然而,在第二个“选择”中,我在 PATH 中输入了我想为每个“父行”重复的名称。

我希望这个问题/答案对其他用户有用。再次感谢,祝大家好运!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...