Expressões Lógicas (XQuery)

Aplica-se a: SQL Server

XQuery suporta os operadores lógicos e//.

expression1 and expression2  
expression1 or expression2  

As expressões de teste, expression1,``expression2, no SQL Server podem resultar numa sequência vazia, numa sequência de um ou mais nós, ou num único valor booleano. Com base no resultado, o seu valor booleano efetivo é determinado da seguinte forma:

  • Se a expressão de teste resultar numa sequência vazia, o resultado da expressão é Falso.

  • Se a expressão de teste resultar num único valor booleano, esse valor é o resultado da expressão.

  • Se a expressão de teste resultar numa sequência de um ou mais nós, o resultado da expressão é Verdadeiro.

  • Caso contrário, surge um erro estático.

O operador lógico e/or é então aplicado aos valores booleanos resultantes das expressões com a semântica lógica padrão.

A consulta seguinte recupera do catálogo de produtos as pequenas imagens em ângulo frontal, o <Picture> elemento, para um modelo de produto específico. Note que para cada documento de descrição de produto, o catálogo pode armazenar uma ou mais imagens de produtos com diferentes atributos, como tamanho e ângulo.

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

Este é o resultado:

<PD:Picture   
  xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">  
  <PD:Angle>front</PD:Angle>  
  <PD:Size>small</PD:Size>  
  <PD:ProductPhotoID>31</PD:ProductPhotoID>  
</PD:Picture>