0

次のXMLをSQLServer2008R2にインポートする必要があります。

<Role
  ID="ef63f979-c65d-421a-a214-7319c6279e13" >
  <Privileges>
    <Privilege ID="1" />
    <Privilege ID="2" />
    <Privilege ID="3" />
    <Privilege ID="4" />
    <Privilege ID="5" />
  </Privileges>
</Role>

テーブル変数を使用してXMLを2回解析することはできますが、1回の解析でこれをリレーショナルテーブルに取り込むことはできません。それは可能ですか?期待される結果セットは次のとおりです。

EF63F979-C65D-421A-A214-7319C6279E13    1   2011-12-05 06:51:11.9065096 EF63F979-C65D-421A-A214-7319C6279E13
EF63F979-C65D-421A-A214-7319C6279E13    2   2011-12-05 06:51:11.9065096 EF63F979-C65D-421A-A214-7319C6279E13
EF63F979-C65D-421A-A214-7319C6279E13    3   2011-12-05 06:51:11.9065096 EF63F979-C65D-421A-A214-7319C6279E13
EF63F979-C65D-421A-A214-7319C6279E13    4   2011-12-05 06:51:11.9065096 EF63F979-C65D-421A-A214-7319C6279E13
EF63F979-C65D-421A-A214-7319C6279E13    5   2011-12-05 06:51:11.9065096 EF63F979-C65D-421A-A214-7319C6279E13

ありがとう、

ラージ

4

1 に答える 1

0

これを抽出できます:

DECLARE @input XML = '<Role
  ID="ef63f979-c65d-421a-a214-7319c6279e13" >
  <Privileges>
    <Privilege ID="1" />
    <Privilege ID="2" />
    <Privilege ID="3" />
    <Privilege ID="4" />
    <Privilege ID="5" />
  </Privileges>
</Role>'

SELECT
    @input.value('(/Role/@ID)[1]', 'uniqueidentifier') AS 'ID',
    T.C.value('(@ID)[1]', 'int') AS 'Privilege'
FROM
    @input.nodes('/Role/Privileges/Privilege') AS T(C)

出力を与えます:

ID                                     Privilege
EF63F979-C65D-421A-A214-7319C6279E13    1
EF63F979-C65D-421A-A214-7319C6279E13    2
EF63F979-C65D-421A-A214-7319C6279E13    3
EF63F979-C65D-421A-A214-7319C6279E13    4
EF63F979-C65D-421A-A214-7319C6279E13    5

しかし、あなたの日付/時刻がどこから来たのかわかりません.....

于 2011-12-05T07:16:39.053 に答える