Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

lặp lại dữ liệu XML trong sql server 2005

Giả sử XML mẫu của bạn trông giống như sau:

<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>

Sau đó, bạn có thể phân tích cú pháp này với hỗ trợ SQL Server 2005 XQuery mới như sau:

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)

Tất nhiên, nếu bạn có thể CHỌN nó, bạn cũng có thể CHÈN các hàng dữ liệu đó vào một bảng khá dễ dàng:

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)

Hy vọng điều này sẽ giúp một chút

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. khôi phục cơ sở dữ liệu không thành công khi di chuyển

  2. Tương đương với 'bảng mô tả' trong SQL Server là gì?

  3. tìm số lượng kết nối mở trên cơ sở dữ liệu

  4. SQL Server chuyển đổi varbinary thành chuỗi

  5. Cách thay đổi các ký tự ngắt từ trong lập chỉ mục Toàn văn của Máy chủ SQL