SQL 조작 XML

2488 단어 sql
얼마 전에 프로젝트 의 진 도 를 따라 잡기 위해 계속 잔업 을 했 습 니 다. 지금 은 한가 해서 앞 에 부 딪 힌 문 제 를 정리 한 결과 매우 유용 한 것 을 발 견 했 습 니 다. 여기 서 같은 문제 에 부 딪 힌 친 구 를 도 울 수 있 는 지 기록 하 겠 습 니 다. 이 글 은 자신의 의견 일 뿐 문제 가 있 으 면 가르침 을 바 랍 니 다.
  
프로젝트 에서 우 리 는 한꺼번에 많은 데 이 터 를 제출 할 때 관성 적 인 사고 에서 볼 때 우리 가 먼저 생각 하 는 것 은 순환 이다.그러나 여기 서 문제 가 존재 합 니 다. 만약 에 데이터 가 많 을 때 현재 사용자 가 조작 한 후에 현재 페이지 에 머 물 러 제출 이 완 료 된 후에 야 다른 조작 을 할 수 있 습 니 다. 그러면 사용자 의 체험 도가 좋 지 않 고 프로그램 과 데이터 베이스 사이 에 부담 을 줄 수 있 습 니 다.이때 우리 에 게 는 이 방법 을 대체 할 좋 은 방법 을 찾 아야 한다.그들의 가르침 을 받 아 데 이 터 를 한꺼번에 제출 하 는 방식 을 발견 했다. 그것 은 바로 데 이 터 를 xml 로 제출 하 는 것 이다.이렇게 한 번 만 제출 하여 데이터 작업 을 마 쳤 습 니 다.그러나 이것 은 데이터 베이스 에 어느 정도 부담 을 줄 수 있 습 니 다. 아직 까지 더 좋 은 방법 을 생각 하지 못 했 습 니 다. 더 좋 은 방법 으로 우리 모두 가 공유 할 수 있 기 를 바 랍 니 다. 아래 에 잘못된 부분 이 있 으 면 말씀 해 주 십시오.
  
sql 에서 데이터 형식 은 모두 가 매우 잘 알 고 있 으 며 모두 25 가지 가 있다 고 믿 습 니 다.보통 우리 도 그 중 에 대응 하 는 것 을 자주 사용한다.그러나 xml 에 대해 서 는 자신 이 보지 못 한 것 같 습 니 다. 다음은 xml 에 대한 일반적인 작업 입 니 다.
1. 프로그램 에서 데 이 터 를 xml 로 연결 하고 자신의 상황 에 맞 게 정 합 니 다. 제 현재 상황 은 이 렇 습 니 다.
  
DECLARE @Xml xml='
<Rates value = "99" OperationUserID="110">
 <Rate>
  <Name last="a">aaa</Name>
  <UserID>126</UserID>
 </Rate>
 <Rate>
  <Name last="b">bbb</Name>
  <UserID>125</UserID>
 </Rate>
 <Rate>
  <Name last="c">ccc</Name>
  <UserID>123</UserID>
 </Rate>
 <Rate>
  <Name last="d">ddd</Name>
  <UserID>124</UserID>
 </Rate>
</Rates>'

 먼저 뿌리 노드 에서 내 려 다 보고 현재 뿌리 노드 의 속성 을 가 져 옵 니 다.
  
SELECT @Xml.value('(/Rates/@value)[1]','int') AS Value

	,@Xml.value('(/Rates/@OperationUserID)[1]','int') AS OperationUserID


 그리고 뿌리 노드 를 보고 뿌리 노드 아래 의 노드 정 보 를 얻는다.
  
SELECT T.c.value('Name[1]','varchar(20)')
 ,T.c.value('UserID[1]','int')
 ,T.c.value('(Name[1]/@last)[1]','varchar(20)')
FROM @Xml.nodes('/Rates/Rate') T(c)

 다음은 당신 이 데 이 터 를 꺼 낸 후에 데 이 터 를 조작 하 는 것 입 니 다. 여기 서 저 는 추 태 를 보이 지 않 고 자신의 상황 을 보고 결정 하 겠 습 니 다.
여기 서 제 가 프로젝트 에서 만난 상황 만 보 여 주 었 습 니 다. 다른 방식 이 있 을 거 라 고 믿 습 니 다. 이런 관심 을 가 진 친구 들 이 우리 가 함께 공유 할 수 있 기 를 바 랍 니 다.무슨 잘못 이 있 으 면 지적 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기