Share via


Valor booleano efectivo (XQuery)

Se aplica a:SQL Server

Éstos son los valores booleanos efectivos:

  • False si el operando es una secuencia vacía o un valor booleano false.

  • De lo contrario, el valor es true.

El valor booleano efectivo puede calcularse para expresiones que devuelven un único valor booleano, una secuencia de nodo o una secuencia vacía. Tenga en cuenta que el valor booleano se calcula de forma implícita, cuando se procesan los siguientes tipos de expresiones:

A continuación se muestra un ejemplo de un valor booleano efectivo. Cuando se procesa la expresión if , se determina el valor booleano efectivo de la condición. Como /a[1] devuelve una secuencia vacía, el valor booleano efectivo es false. El resultado se devuelve como XML con un nodo de texto (false).

value is false  
DECLARE @x XML  
SET @x = '<b/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

En el siguiente ejemplo, el valor booleano efectivo es true, porque la expresión devuelve una secuencia no vacía.

DECLARE @x XML  
SET @x = '<a/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

Al consultar variables o columnas xml con tipo, puede tener nodos de tipo booleano. En este caso , data() devuelve un valor booleano. Si la expresión de consulta devuelve un valor booleano true, el valor booleano efectivo será true, tal y como se muestra en el siguiente ejemplo. En el ejemplo también se ilustra lo siguiente:

  • Se crea una colección de esquemas XML. El elemento <b> de la colección es de tipo booleano.

  • Se crea y consulta una variable xml con tipo.

  • La expresión data(/b[1]) devuelve un valor booleano true. Por tanto, el valor booleano efectivo en este caso es true.

  • La expresión data(/b[2]) devuelve un valor booleano false. Por tanto, el valor booleano efectivo en este caso es false.

CREATE XML SCHEMA COLLECTION SC AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema">  
      <element name="s" type="string"/>  
      <element name="b" type="boolean"/>  
</schema>'  
go  
DECLARE @x XML(SC)  
SET @x = '<b>true</b><b>false</b>'  
SELECT @x.query('if (data(/b[1])) then "true" else "false"')  
SELECT @x.query('if (data(/b[2])) then "true" else "false"')  
go  

Consulte también

Conceptos básicos de XQuery
FLWOR (instrucción e iteración de XQuery)