SQL SERVER : XML 파일에서 쿼리를 만드는 방법

데이브 헨드릭

다음과 같은 두 개의 xml 파일이 있습니다.

<?xml version="1.0"?>
<instance xmlns="http://www.ubrea.com/xforms/88668970-6edb-0131-28e9-22000a1cda92" xmlns:tm="http://www.ubrea.com/xforms" >
<inputs>
<Truck_Number_Non_Barcode>MNKSJJHDHH88728</Truck_Number_Non_Barcode>
<VIN>
  <Non_Barcode>xyz</Non_Barcode>
  <ODO>1425788</ODO> 
  <Defect>
    <Code>33J</Code>
</Defect> 
</VIN>
</inputs>
</instance>

<?xml version="1.0"?>
<instance xmlns="http://www.ubrea.com/xforms/88668970-6edb-0131-28e9-22000a1cda92" xmlns:tm="http://www.ubrea.com/xforms" >
<inputs>
<Number_Non_Barcode>mnbcdsddsd3455</Number_Non_Barcode>
<VIN>
  <Non_Barcode>xyz</Non_Barcode>
  <ODO>1425788</ODO>      
</VIN>
</inputs>
</instance>

다음은 xml 파일을 구문 분석하기위한 sqlquery입니다.

declare @xmldata xml
set @xmldata ='
<?xml version="1.0"?>
<instance xmlns="http://www.ubrea.com/xforms/88668970-6edb-0131-28e9-22000a1cda92" xmlns:tm="http://www.ubrea.com/xforms" >
<inputs>
<Number_Non_Barcode>mnbcdsddsd3455</Number_Non_Barcode>
<VIN>
  <Non_Barcode>xyz</Non_Barcode>
  <ODO>1425788</ODO>      
</VIN>
</inputs>
</instance>'
declare @sql nvarchar(max)
declare @xmlns varchar(max)
set @xmlns=''''+SUBSTRING(cast(@xmldata as varchar(max)),CHARINDEX('http://www.ubrea.com/xforms/',cast(@xmldata as varchar(max)),1),CHARINDEX('" xmlns:dm',cast(@xmldata as varchar(max)),1)-18)+''''
set @sql='
declare @xmldata xml
set @xmldata = '''+cast(@xmldata as varchar(max))+'''
begin try
;WITH XMLNAMESPACES 
(
    DEFAULT ' + @xmlns +
     ','+'''http://www.ubrea.com/xforms''' + ' as fm 
)
select
    Number_Non_Barcode, Non_Barcode, ODO, Code
from (
select          
    x.c.value(''(../../Number_Non_Barcode)[1]'', ''varchar(100)'') as Number_Non_Barcode,       
    x.c.value(''(../Non_Barcode)[1]'', ''varchar(100)'') as Non_Barcode,
    x.c.value(''(../ODO)[1]'', ''varchar(100)'') as ODO,
    x.c.value(''(Code)[1]'', ''varchar(100)'') as Code      
from @xmldata.nodes(''/instance/inputs/VIN/Defect'') x(c)
) x  

end try
begin catch
select ERROR_NUMBER() Code, ERROR_MESSAGE() Message
end catch'
exec sp_executesql @sql;

<Defect>사용할 수없는 경우 쿼리를 만드는 방법 및 결과는 다음과 같아야합니다.

Number_Non_Barcode  Non_Barcode   ODO         Defect_Code
mnbcdsddsd3455      xyz           1425788      NULL

나는 xml 쿼리에 익숙하지 않고 그것을 수행하는 방법의 예를 찾을 수없는 것 같습니다. 어떤 도움을 주시면 감사하겠습니다. 감사

미카엘 에릭슨

기본 네임 스페이스를 알 수 없기 때문에 동적 쿼리가있는 것 같습니다. 대신를 사용하여 XQuery에서 네임 스페이스를 지정할 수 있습니다 *.

여러 단계를 ..사용하여 XML을 파쇄 하면 상위 축 사용을 피할 수 있습니다 . 때문에 노드가 누락 될 수 있습니다 당신은 사용이 그 노드를 분쇄 할 때.nodes()cross applyDefectouter apply

select I.X.value('(*:Number_Non_Barcode/text())[1]', 'varchar(100)') as Number_Non_Barcode,
       V.X.value('(*:Non_Barcode/text())[1]', 'varchar(100)') as Non_Barcode,
       V.X.value('(*:ODO/text())[1]', 'varchar(100)') as ODO,
       D.X.value('(*:Code/text())[1]', 'varchar(100)') as Code
from @XMLData.nodes('/*:instance/*:inputs') as I(X)
  cross apply I.X.nodes('*:VIN') as V(X)
  outer apply V.X.nodes('*:Defect') as D(X)

SQL 바이올린

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL Server 2008 R2에서 쿼리를 만드는 방법

분류에서Dev

SQL Server 2012에서 SQL 문 (쿼리)을 미리 컴파일하는 방법

분류에서Dev

SQL 쿼리를 SQL Server 2008에서 2012로 업그레이드하는 방법

분류에서Dev

SQL Server 2008에서이 쿼리를 작성하는 방법

분류에서Dev

SQL Server에서 검색 쿼리를 작성하는 방법

분류에서Dev

SQL SERVER에서 현재 날짜를 쿼리하는 방법

분류에서Dev

SQL Server에서 내 쿼리 (수식)를 저장하는 방법

분류에서Dev

SQL Server에서 SSL을 통해 LDAP를 쿼리하는 방법

분류에서Dev

SQL Server에서 XML 열을 쿼리하는 방법은 무엇입니까?

분류에서Dev

SQL Server : 단일 쿼리에서 Count before Count를 실행하는 방법

분류에서Dev

무들에서 복잡한 SQL 쿼리를 만드는 방법

분류에서Dev

SQL 테이블에 저장된 XML에 대한 유연한 쿼리를 만드는 방법

분류에서Dev

내 상황에 맞는 SQL 쿼리를 만드는 방법

분류에서Dev

SQL Server에서 형식이 지정된 xml 파일을 읽는 방법

분류에서Dev

근무 시간에 대한 SQL 쿼리를 만드는 방법

분류에서Dev

C #에서 일반 XML 파일을 구문 분석하여 SQL Server 데이터베이스에 테이블을 만드는 방법

분류에서Dev

Sql Server Management Studio에서 다른 세션 시나리오를 만드는 방법

분류에서Dev

LIMIT에 대해 MYSQL에서 SQL SERVER로 쿼리를 변경하는 방법

분류에서Dev

T-SQL 쿼리 FOR XML 출력, XML 쿼리를 사양에 맞게 올바르게 포맷하는 방법

분류에서Dev

SQL Server에 하나의 쿼리 만있는 방법

분류에서Dev

Group by 절에서 하위 쿼리를 사용하는 방법 SQL Server 2005

분류에서Dev

bcp 명령 SQL Server에서 여러 쿼리를 추가하는 방법

분류에서Dev

SQL Server의 WITH 절에서 동적 쿼리를 실행하는 방법

분류에서Dev

SQL Server 2000에서 쿼리를 작성하는 방법은 무엇입니까?

분류에서Dev

SQL 쿼리 내에서 SQL 쿼리를 실행하는 방법

분류에서Dev

SQL Server 2008 R2 : 함수를 통해 변수에서 xml 노드 쿼리

분류에서Dev

SQL 쿼리 결과에서 dynatree를 만드는 방법은 무엇입니까?

분류에서Dev

From Date To Date 열이있는 한 행을 매일 또는 매월 여러 행으로 변환하는 SQL Server 쿼리를 만드는 방법

분류에서Dev

SQL Server에서 XML 노드 값을 합산하는 방법

Related 관련 기사

  1. 1

    SQL Server 2008 R2에서 쿼리를 만드는 방법

  2. 2

    SQL Server 2012에서 SQL 문 (쿼리)을 미리 컴파일하는 방법

  3. 3

    SQL 쿼리를 SQL Server 2008에서 2012로 업그레이드하는 방법

  4. 4

    SQL Server 2008에서이 쿼리를 작성하는 방법

  5. 5

    SQL Server에서 검색 쿼리를 작성하는 방법

  6. 6

    SQL SERVER에서 현재 날짜를 쿼리하는 방법

  7. 7

    SQL Server에서 내 쿼리 (수식)를 저장하는 방법

  8. 8

    SQL Server에서 SSL을 통해 LDAP를 쿼리하는 방법

  9. 9

    SQL Server에서 XML 열을 쿼리하는 방법은 무엇입니까?

  10. 10

    SQL Server : 단일 쿼리에서 Count before Count를 실행하는 방법

  11. 11

    무들에서 복잡한 SQL 쿼리를 만드는 방법

  12. 12

    SQL 테이블에 저장된 XML에 대한 유연한 쿼리를 만드는 방법

  13. 13

    내 상황에 맞는 SQL 쿼리를 만드는 방법

  14. 14

    SQL Server에서 형식이 지정된 xml 파일을 읽는 방법

  15. 15

    근무 시간에 대한 SQL 쿼리를 만드는 방법

  16. 16

    C #에서 일반 XML 파일을 구문 분석하여 SQL Server 데이터베이스에 테이블을 만드는 방법

  17. 17

    Sql Server Management Studio에서 다른 세션 시나리오를 만드는 방법

  18. 18

    LIMIT에 대해 MYSQL에서 SQL SERVER로 쿼리를 변경하는 방법

  19. 19

    T-SQL 쿼리 FOR XML 출력, XML 쿼리를 사양에 맞게 올바르게 포맷하는 방법

  20. 20

    SQL Server에 하나의 쿼리 만있는 방법

  21. 21

    Group by 절에서 하위 쿼리를 사용하는 방법 SQL Server 2005

  22. 22

    bcp 명령 SQL Server에서 여러 쿼리를 추가하는 방법

  23. 23

    SQL Server의 WITH 절에서 동적 쿼리를 실행하는 방법

  24. 24

    SQL Server 2000에서 쿼리를 작성하는 방법은 무엇입니까?

  25. 25

    SQL 쿼리 내에서 SQL 쿼리를 실행하는 방법

  26. 26

    SQL Server 2008 R2 : 함수를 통해 변수에서 xml 노드 쿼리

  27. 27

    SQL 쿼리 결과에서 dynatree를 만드는 방법은 무엇입니까?

  28. 28

    From Date To Date 열이있는 한 행을 매일 또는 매월 여러 행으로 변환하는 SQL Server 쿼리를 만드는 방법

  29. 29

    SQL Server에서 XML 노드 값을 합산하는 방법

뜨겁다태그

보관