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:
Expresiones lógicas
La función not
La cláusula WHERE de una expresión FLWOR
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)