다음을 통해 공유


xml 데이터 형식에 대한 XQuery 연산자

XQuery에는 다음 연산자가 지원됩니다.

  • 수치 연산자(+, -, *, div, mod)

  • 값 비교 연산자(eq, ne, lt, gt, le, ge)

  • 일반 비교 연산자( =, !=, <, >, <=, >= )

이러한 연산자에 대한 자세한 내용은 비교 식(XQuery)을 참조하십시오.

1.일반 연산자 사용

다음 쿼리는 시퀀스에 적용되고 시퀀스를 비교하는 일반 연산자를 사용하는 방법을 보여 줍니다. 이 쿼리에서는 Contact 테이블의 AdditionalContactInfo 열에서 각 고객에 대한 일련의 전화 번호를 검색합니다. 그런 다음 이 번호를 두 개의 전호 번호("111-111-1111", "222-2222")와 비교합니다.

이 쿼리에서는 = 비교 연산자가 사용됩니다. = 연산자의 오른쪽에 있는 시퀀스에서 각 노드는 왼쪽에 있는 시퀀스의 각 노드와 비교됩니다. 노드가 일치하면 노드 비교가 TRUE입니다. 그런 다음 int로 변환되고 1과 비교되어 쿼리가 고객 ID를 반환합니다.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS ACI,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)
SELECT ContactID 
FROM   Person.Contact
WHERE  AdditionalContactInfo.value('
      //ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number = 
          ("111-111-1111", "222-2222")',
      'bit')= cast(1 as bit)

이전 쿼리의 작동 방식을 다음과 같이 관측할 수도 있습니다. AdditionalContactInfo 열에서 검색되는 각 전화 번호 값은 두 개의 전화 번호 집합과 비교됩니다. 값이 집합에 있는 경우 각 해당 고객이 결과에 반환됩니다.

2.숫자 연산자 사용

이 쿼리의 + 연산자는 단일 항목에 적용되기 때문에 값 연산자입니다. 예를 들어 쿼리에 의해 반환되는 로트 크기에 값 1이 추가됩니다.

SELECT ProductModelID, Instructions.query('
     declare namespace 
 AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
     for $i in (/AWMI:root/AWMI:Location)[1]
     return 
       <Location LocationID="{ ($i/@LocationID) }"
                   LotSize  = "{  number($i/@LotSize) }"
                   LotSize2 = "{ number($i/@LotSize) + 1 }"
                   LotSize3 = "{ number($i/@LotSize) + 2 }" >
                   
       </Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7

3.값 연산자 사용

다음 쿼리는 그림 크기가 "small"인 제품 모델에 대한 <Picture> 요소를 검색합니다.

SELECT CatalogDescription.query('
     declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
     for $P in /PD:ProductDescription/PD:Picture[PD:Size eq "small"]
     return
           $P
    ') as Result
FROM Production.ProductModel
where ProductModelID=19

eq 연산자에 대한 피연산자가 모두 원자 값이기 때문에 값 연산자가 쿼리에 사용됩니다. 일반 비교 연산자 (=)를 사용하여 같은 쿼리를 작성할 수 있습니다.

참고 항목

참조

xml 데이터 형식에 대한 XQuery 함수

개념

XML 데이터(SQL Server)

관련 자료

XQuery 언어 참조(SQL Server)