sql >> データベース >  >> RDS >> Sqlserver

FOR XML PATH および xsi:nil 属性

    for xml path を使用したサブクエリでこの動作を防ぐことはできないと思います .同様の問題がここで報告されています。 https ://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

    for xml explicit を使用すると、必要な出力を取得できます

    declare @T table(Level1 int, Level2 int)
    insert into @T values(null, 2)
    
    select 1    as Tag,
           null as Parent,
           null as [root!1],
           null as [nested1!2!level1!ELEMENTXSINIL],
           null as [nested1!2!level2!ELEMENTXSINIL],
           null as [nested2!3!level1!ELEMENTXSINIL],
           null as [nested2!3!level2!ELEMENTXSINIL]
    union all
    select 2    as Tag,
           1    as Parent,
           null,
           Level1,
           Level2,
           null,
           null
    from @T       
    union all
    select 3    as Tag,
           1    as Parent,
           null,
           null,
           null,
           Level1,
           Level2
    from @T       
    for xml explicit       
    

    結果:

    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <nested1>
        <level1 xsi:nil="true" />
        <level2>2</level2>
      </nested1>
      <nested2>
        <level1 xsi:nil="true" />
        <level2>2</level2>
      </nested2>
    </root>
    



    1. サブクエリを使用しないPostgreSQLの合計に対する割合

    2. Oracle PL/SQL開発者を使用してテストデータを生成する

    3. 2つのテーブルを比較した後、一致を出力するにはどうすればよいですか?

    4. 主キーもインデックスですか?