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
- Funzione not
- Clausola WHERE di un'espressione FLWOR
- Espressioni condizionali
- Espressioni quantificate
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)