Partilhar via


Valor Booleano Efetivo (XQuery)

Aplica-se a:SQL Server

Estes são os valores booleanos efetivos:

  • False se o operando for uma sequência vazia ou um falso booleano.

  • Caso contrário, o valor é true.

O valor booleano efetivo pode ser calculado para expressões que retornam um único valor booleano, uma sequência de nó ou uma sequência vazia. Observe que o valor booleano é calculado implicitamente quando os seguintes tipos de expressões são processados:

Segue-se um exemplo de um valor booleano eficaz. Quando o se expressão é processada, o valor booleano efetivo da condição é determinado. Como /a[1] retorna uma sequência vazia, o valor booleano efetivo é false. O resultado é retornado como XML com um nó de texto (false).

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

No exemplo a seguir, o valor booleano efetivo é true, porque a expressão retorna uma sequência não vazia.

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

Ao consultar colunas ou variáveis de xml digitadas, você pode ter nós do tipo booleano. O data() neste caso retorna um valor booleano. Se a expressão de consulta retornar um valor verdadeiro booleano, o valor booleano efetivo será true, conforme mostrado no exemplo a seguir. O seguinte também é ilustrado no exemplo:

  • Uma coleção de esquema XML é criada. O elemento <b> na coleção é do tipo booleano.

  • Uma variável de xml digitada é criada e consultada.

  • A expressão data(/b[1]) retorna um valor verdadeiro booleano. Portanto, o valor booleano efetivo neste caso é verdadeiro.

  • A expressão data(/b[2]) retorna um valor falso booleano. Portanto, o valor booleano efetivo neste caso é falso.

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  

Ver também

Noções básicas do XQuery
de instrução e iteração FLWOR (XQuery)