針對 xml 資料類型的 XQuery 運算子

適用於:SQL Server

XQuery 支援下列運算子:

  • 數值運算子(+、-、*、div、mod)

  • 值比較的運算子(eq、ne、lt、gt、le、ge)

  • 一般比較的運算子 (=、!=、、 <> 、 < =、 > = )

如需這些運算子的詳細資訊,請參閱 比較運算式 (XQuery)

範例

A. 使用一般運算子

此查詢說明使用套用至序列的一般運算子,以及比較序列。 查詢會從 Contact 資料表的 AdditionalContactInfo 資料行擷取每位客戶的電話號碼序列。 然後,這個序列與兩個電話號碼的序列進行比較(「111-111-1111」、「222-2222」)。

查詢會使用 = 比較運算子。 運算子右側 = 序列中的每個節點都會與左邊序列中的每個節點進行比較。 如果節點相符,則節點比較為 TRUE 。 然後它會轉換成 int,並與 1 比較,而查詢會傳回客戶識別碼。

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 資料行擷取的每個電話號碼值會與兩個電話號碼的集合進行比較。 如果值位於集合中,則會在結果中傳回該客戶。

B. 使用數值運算子

此查詢中的 + 運算子是值運算子,因為它會套用至單一專案。 例如,值 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  

C. 使用值運算子

下列查詢會 <Picture> 擷取圖片大小為 「small」 的產品模型元素:

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)