Valor booleano efectivo (XQuery)Effective Boolean Value (XQuery)

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Éstos son los valores booleanos efectivos:These are the effective Boolean values:

  • False si el operando es una secuencia vacía o un valor booleano false.False if the operand is an empty sequence or a Boolean false.

  • De lo contrario, el valor es true.Otherwise, the value is true.

    El valor booleano efectivo puede calcularse para expresiones que devuelven un único valor booleano, una secuencia de nodo o una secuencia vacía.The effective Boolean value can be computed for expressions that return a single Boolean value, a node sequence, or an empty sequence. Tenga en cuenta que el valor booleano se calcula de forma implícita, cuando se procesan los siguientes tipos de expresiones:Note that the Boolean value is computed implicitly when the following types of expressions are processed:

  • Expresiones lógicasLogical expressions

  • El no funcionenThe not function

  • La cláusula WHERE de una expresión FLWORThe WHERE clause of a FLWOR expression

  • Expresiones condicionalesConditional expressions

  • Expresiones cuantificadasQuantifiedeExpressions

    A continuación se muestra un ejemplo de un valor booleano efectivo.Following is an example of an effective Boolean value. Cuando el si se procesa la expresión, se determina el valor booleano efectivo de la condición.When the if expression is processed, the effective Boolean value of the condition is determined. Como /a[1] devuelve una secuencia vacía, el valor booleano efectivo es false.Because /a[1] returns an empty sequence, the effective Boolean value is false. El resultado se devuelve como XML con un nodo de texto (false).The result is returned as XML with one text node (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.In the following example, the effective Boolean value is true, because the expression returns a nonempty sequence.

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

Al consultar escrito xml columnas o variables, puede tener nodos de tipo booleano.When querying typed xml columns or variables, you can have nodes of Boolean type. El data() en este caso, devuelve un valor booleano.The data() in this case returns a Boolean value. 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.If the query expression returns a Boolean true value, the effective Boolean value is true, as shown in the next example. En el ejemplo también se ilustra lo siguiente:The following is also illustrated in the example:

  • Se crea una colección de esquemas XML.An XML schema collection is created. El elemento <b > de la colección es de tipo booleano.The element <b> in the collection is of Boolean type.

  • Un tipo xml variable se crea y se consultan.A typed xml variable is created and queried.

  • La expresión data(/b[1]) devuelve un valor booleano true.The expression data(/b[1]) returns a Boolean true value. Por tanto, el valor booleano efectivo en este caso es true.Therefore, the effective Boolean value in this case is true.

  • La expresión data(/b[2]) devuelve un valor booleano false.The expression data(/b[2]) returns a Boolean false value. Por tanto, el valor booleano efectivo en este caso es false.Therefore, the effective Boolean value in this case is 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  

Vea tambiénSee Also

Conceptos básicos de XQuery XQuery Basics
Instrucción FLWOR e iteración ( XQuery )FLWOR Statement and Iteration (XQuery)