Condividi tramite


Valore booleano effettivo (XQuery)

Si applica a: SQL Server

I valori booleani effettivi sono:

  • False se l'operando è una sequenza vuota o un valore booleano False.

  • In caso contrario, il valore è True.

È possibile calcolare il valore booleano effettivo per le espressioni che restituiscono un valore booleano singolo, una sequenza di nodi o una sequenza vuota. Si noti che il valore booleano viene calcolato in modo implicito quando vengono elaborati i tipi seguenti di espressioni:

Di seguito è riportato un esempio di un valore booleano effettivo. Quando viene elaborata l'espressione if , viene determinato il valore booleano effettivo della condizione. Poiché /a[1] restituisce una sequenza vuota, il valore booleano effettivo è False. Il risultato viene restituito in formato XML con un nodo di testo (false).

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

Nell'esempio seguente, il valore booleano effettivo è True, perché l'espressione restituisce una sequenza non vuota.

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

Quando si eseguono query su colonne o variabili xml tipizzate, è possibile avere nodi di tipo Boolean. Data () in questo caso restituisce un valore booleano. Se l'espressione della query restituisce un valore booleano True, il valore booleano effettivo è True, come illustrato nell'esempio seguente. Nell'esempio viene inoltre illustrato quanto segue:

  • Viene creata una raccolta di XML Schema. L'elemento <b> nella raccolta è di tipo booleano.

  • Viene creata ed eseguita una query su una variabile xml tipizzata.

  • L'espressione data(/b[1]) restituisce un valore booleano True e pertanto in questo caso il valore booleano effettivo è True.

  • L'espressione data(/b[2]) restituisce un valore Boolean false. e pertanto in questo caso il valore booleano effettivo è 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  

Vedi anche

Nozioni fondamentali su XQuery
Istruzione e iterazione FLWOR (XQuery)