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

Làm cách nào để chèn kết quả XML FOR AUTO vào bảng?

Bảng kiểm tra và dữ liệu

create table tableABC(A int, B bit, C varchar(10))
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')

Nhận xml

declare @xml xml
set @xml = (select *
            from tableABC
            for xml auto, elements)

Dữ liệu XML

<tableABC>
  <A>1</A>
  <B>1</B>
  <C>Row 1</C>
</tableABC>
<tableABC>
  <A>2</A>
  <B>0</B>
  <C>Row 1</C>
</tableABC>

Chèn vào một bảng khácABC

insert into tableABC(A, B, C)
select 
  r.value('A[1]', 'int'),
  r.value('B[1]', 'bit'),
  r.value('C[1]', 'varchar(10)')
from @xml.nodes('tableABC') t(r)

Chỉnh sửa Sao chép toàn bộ câu lệnh này để kiểm tra xem nó có hoạt động không

use tempdb
go

create table tableABC(A int, B bit, C varchar(10))

go
insert into tableABC values(1, 1, 'Row 1')
insert into tableABC values(2, 0, 'Row 1')

declare @xml xml
set @xml = (select *
            from tableABC
            for xml auto, elements)

insert into tableABC(A, B, C)
select 
  r.value('A[1]', 'int'),
  r.value('B[1]', 'bit'),
  r.value('C[1]', 'varchar(10)')
from @xml.nodes('tableABC') t(r)

select *
from tableABC

go

drop table tableABC

Kết quả là các hàng trùng lặp trong bảngABC

A           B     C
----------- ----- ----------
1           1     Row 1
2           0     Row 1
1           1     Row 1
2           0     Row 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế một phần của chuỗi bằng chữ hoa tương đương từ bảng tạm thời tham chiếu chéo - tsql

  2. ON [PRIMARY] có nghĩa là gì?

  3. Kiểm tra trạng thái của tất cả thư cơ sở dữ liệu trong SQL Server (T-SQL)

  4. Biết mối quan hệ giữa tất cả các bảng của cơ sở dữ liệu trong SQL Server

  5. Làm thế nào để thực hiện một truy vấn vòng lặp sql để kiểm tra sự khác biệt giữa các giá trị?