针对 xml 数据类型的 XQuery 运算符

适用于:SQL Server

XQuery 支持下列运算符:

  • 数字运算符(+、-、*、div、mod)

  • 值比较运算符(eq、ne、lt、gt、le、ge)

  • 用于常规比较的运算符 ( =、 !=、 <、 >、 <= = >)

有关这些运算符的详细信息,请参阅 比较表达式 (XQuery)

示例

A. 使用一般运算符

此查询说明了应用于序列和比较序列的一般运算符的使用方法。 该查询从 Contact 表的 AdditionalContactInfo 列中检索每个客户的电话号码序列。 然后,将这个序列与两个电话号码(“111-111-1111”、“222-2222”)序列进行比较。

查询使用 = 比较运算符。 将运算符右侧 = 序列中的每个节点与左侧序列中的每个节点进行比较。 如果节点匹配,则节点比较为 TRUE。 然后将其转换为整数并与 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 列检索到的每个电话号码值都与两个电话号码集进行比较。 如果该值处于集中,则该客户将返回到结果中。

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> 图片大小为“小”的产品模型的元素:

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)