2

以下に示す形式のxml変数があり、要素名とそれぞれのフィールド値を動的に読み取ってT-SQL構造体にロードする必要があります。

declare @InputXml   xml
Set @InputXml = '<Root RootName="rooNameValueHere">
            <Element Name="elementName">
                <SubElement Field="subelementFielName"/>
            </Element>
            <Element Name="otherElementName">
                <SubElement Field="subelementFielName1"/>
                <SubElement Field="subelementFielName2"/>
                <SubElement Field="subelementFielName3"/>
            </Element>
        </Root>'

ヒント:1-ルートにはN個の要素を含めることができます2-各要素にはN個のサブ要素を含めることができます3-すべての情報を取得でき、1つの要素名を指定して除外できるルーチンを作成する必要があります(ei:特定の要素、そのすべてのsubElementsを返します)。

現在、このT-SQLを記述して、1つの要素名を指定してsubElementsを取得していますが、null値を取得しています。

select 
    t.c.value('@Field', 'nvarchar(10)') AS SomeAlias
from
    @InputXml.nodes('N/Root/Element[@Name = ''elementName'']//SubElement') t(c);

解決策

この投稿は、私の問題を解決するのに役立ちます。回答してくれたすべての人に感謝します。

4

2 に答える 2

2

クエリの先頭から「N」文字を削除したところ、機能しました:)

@InputXml.nodes('/Root/Element2[@Name = ''otherElementName'']//SubElement') t(c);
于 2012-03-12T22:10:21.107 に答える
1

これを試して:

select 
    t.c.value('@Field', 'nvarchar(100)') AS SomeAlias
from
    @InputXml.nodes(N'/Root/Element[@Name = "elementName"]/SubElement') t(c);

結果:

subelementFielName
于 2012-03-12T22:10:28.707 に答える