【问题标题】:Output table to Xml: Show attribute value based on the a specific column value将表输出到 Xml:根据特定列值显示属性值
【发布时间】:2017-02-01 10:21:11
【问题描述】:

我正在尝试将表格输出为 Xml。我希望根节点名称为“New”,并且表中的每一行都显示为 <member>

<new>
     <member source="STORE">
              <externalId>111</externalId>
              <eclubNo>123456</eclubNo>
              <ssn>195812272796</ssn>
              <firstName>Loke</firstName >
              <lastName>Sjögren</lastName>
              <email>yyy@xxx.se</email>
        </member>
        <member source="WEB">
              <externalId>222</externalId>
              <eclubNo>764746</eclubNo>
              <ssn>222</ssn>
              <firstName>Loke</firstName >
              <lastName>Sjögren</lastName>
              <email>blahblahblah@yahoo.com</email>
        </member>
</new>

如您所见,每个&lt;member&gt; 都有一个名为source 的属性。 source 的值取决于表中可以包含源值的同名列(如果值为“StoreEntry”则变为“STORE”,如果值为“WebEntry”则变为“WEB”,如 sn- p 上面)。如何使用For Xml 语句获取此 XML?

【问题讨论】:

    标签: sql xml tsql


    【解决方案1】:

    你可以这样试试:

    这是一个工作示例。下次请自己准备(How to create a MCVE):

    DECLARE @tbl TABLE(source VARCHAR(100),externalId INT,eclubNo INT,ssn BIGINT,firstName VARCHAR(100),lastName VARCHAR(100),email VARCHAR(100));
    INSERT INTO @tbl VALUES
     ('StoreEntry',111,123456,13213213123,'Loke','Sjörgen','yyy@xxx.se')
    ,('WebEntry',222,34234,443,'Other','Name','email@yyy.se');
    

    --查询

    SELECT CASE WHEN [source]='StoreEntry' THEN 'STORE' ELSE 'WEB' END AS [@source]
          ,externalId
          ,eclubNo
          ,ssn
          ,firstName
          ,lastName
          ,email
    FROM @tbl AS YourTable
    FOR XML PATH('member'),ROOT('new');
    

    结果

    <new>
      <member source="STORE">
        <externalId>111</externalId>
        <eclubNo>123456</eclubNo>
        <ssn>13213213123</ssn>
        <firstName>Loke</firstName>
        <lastName>Sjörgen</lastName>
        <email>yyy@xxx.se</email>
      </member>
      <member source="WEB">
        <externalId>222</externalId>
        <eclubNo>34234</eclubNo>
        <ssn>443</ssn>
        <firstName>Other</firstName>
        <lastName>Name</lastName>
        <email>email@yyy.se</email>
      </member>
    </new>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多