Condividi tramite


Valore booleano effettivo (XQuery)

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 esegue una query su colonne o variabili xml tipizzate, è possibile che si ottengano nodi di tipo booleano. In questo caso, data() 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 creato un insieme di schemi XML. L'elemento <b> nell'insieme è di tipo booleano.
  • Viene creata una variabile xml tipizzata, sulla quale viene eseguita una query.
  • 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 booleano 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

Vedere anche

Concetti

Nozioni fondamentali su XQuery
Istruzione e iterazione FLWOR (XQuery)

Guida in linea e informazioni

Assistenza su SQL Server 2005