Expresiones lógicas (XQuery)
XQuery admite los operadores lógicos and y or.
expression1 and expression2
expression1 or expression2
Las expresiones de prueba, expression1,expression2, en SQL Server pueden dar como resultado una secuencia vacía, una secuencia de uno o varios nodos, o un solo valor booleano. En función del resultado, se determinará su valor booleano efectivo de la forma siguiente:
Si la expresión de prueba da como resultado una secuencia vacía, el resultado será False.
Si la expresión de prueba da como resultado un solo valor booleano, este valor será el resultado de la expresión.
Si la expresión de prueba da como resultado una secuencia de uno o varios nodos, el resultado de la expresión será True.
De lo contrario, se generará un error estático.
A continuación, se aplicarán los operadores lógicos and y or a los valores booleanos resultantes de las expresiones con la semántica lógica estándar.
La consulta siguiente recupera del catálogo de productos las imágenes pequeñas de ángulo frontal, el elemento <Picture>, de un modelo de producto determinado. Tenga en cuenta que para cada documento de descripción de productos, se pueden almacenar en el catálogo una o varias imágenes de producto con distintos atributos, como el tamaño y el á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
El resultado es el siguiente:
<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>