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

SQL Server 2005 での XML データの反復

    サンプル XML が次のようになっているとします。

    <MissingDS>
      <MissingTable>
        <MissingColumn>abc</MissingColumn>
        <TableName>tblMyTable</TableName>
        <PhysicalColName>table_abc</PhysicalColName>
        <Grantor_Grantee>nobody</Grantor_Grantee>
      </MissingTable>
      <MissingTable>
        <MissingColumn>xyu</MissingColumn>
        <TableName>tblMyTable2</TableName>
        <PhysicalColName>table_xyz</PhysicalColName>
        <Grantor_Grantee>nobody2</Grantor_Grantee>
      </MissingTable>
    </MissingDS>
    

    次に、次のように、新しい SQL Server 2005 XQuery サポートを使用してこれを解析できます。

    DECLARE @MissingXML XML
    SET @MissingXML = CAST(@MissingRecordsXML AS XML)
    
    SELECT
        Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
        Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
        Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
        Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
    FROM
        @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)
    

    もちろん、SELECT ができれば、同じデータ行をテーブルに簡単に INSERT することもできます:

    INSERT INTO 
      dbo.MissingDSTable(MissingColumn, TableName, PhysicalColName, Grantor_Grantee)
        SELECT
           Missing.Rec.value('(MissingColumn)[1]', 'varchar(1000)') AS 'MissingColumn',
           Missing.Rec.value('(TableName)[1]', 'varchar(100)') AS 'TableName',
           Missing.Rec.value('(PhysicalColName)[1]', 'varchar(100)') AS 'Physical',
           Missing.Rec.value('(Grantor_Grantee)[1]', 'varchar(100)') AS 'Grantor_Grantee'
        FROM
           @MissingXML.nodes('/MissingDS/MissingTable') AS Missing(Rec)
    

    これが少し役立つことを願っています

    マーク



    1. 1つのクエリ(MySQL)の複数の条件に対する複数のCOUNT()

    2. JavaPreparedStatementおよびONDUPLICATEKEY UPDATE:行が挿入されたか更新されたかを知るにはどうすればよいですか?

    3. データベースからbase64画像を取得する

    4. データベースに接続するときの「インターフェースエラー:2003」