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:
Espressioni logiche
La funzione not
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 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)