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:
Espressioni logiche
Clausola WHERE di un'espressione FLWOR
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 creata una raccolta di XML Schema. L'elemento <b> nella raccolta è 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
Istruzione e iterazione FLWOR (XQuery)